Печать Чеков ККМ с помощью компоненты "DatecsECR.TECRFisc".

24.03.16

Интеграция - ККМ

Обработка подходит для любой конфигурации где есть документы "Реализация товаров и Услуг" и "Чек ККМ". Для  фискальных регистраторов datecs.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Печать чеков ККМ (DatecsECR)
.epf 11,65Kb
6
6 Скачать (1 SM) Купить за 1 850 руб.

Недавно столкнулся с проблемой печати чеков ККМ с помощью компоненты "DatecsECR". Может, кому будет полезна моя публикация. Собственно задача стояла реализовать печать копии чеков ККМ. Углубившись в задачу и в мануал по работе с компонентой DatecsECR, понял, что только по последнему созданному чеку можно напечатать копию. Задача же стоит - печатать копию любого чека.

Для реализации такой возможности нужно где-то хранить номер и дату чека фискального регистратора. Я выбрал самый легкий вариант, в реквизитах документа «Чек ККМ». Если конфигурацию стоит на поддержке, лучше создать отдельный регистр сведений для этих целей.

Если нужно печать только сами чеки из 1С на фискальный регистратор, то дорабатывать ничего не надо.

Обработка не претендует на эталон и выложена для примера печати чеков ККМ, поэтому перед скачиванием посмотрите код, может, такой вариант вам и не подойдет.

Вот код процедуры печати чека:

	
	ПолучитьТаблицуЧеков();
	
	флЕстьОшибка = 0;
	
	ECRFisc=Новый COMОбъект("DatecsECR.TECRFisc");
	

	Для каждого СтрокаДокументаЧекККМ из ТаблицаЧеков цикл 
		
		флЕстьОшибка = 0;
		
		Сообщить("Печать чека для РН "+СтрокаДокументаЧекККМ.Ссылка, СтатусСообщения.Информация);
		                    
		// 1. откроем порт
		Result = ECRFisc.SetComPort(1, 19200);
		ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
				"Открыли COM порт. "+Строка(СтрокаДокументаЧекККМ.ЧекККМ));
				
		Если Result <> 1 Тогда
		//Если не Result тогда
			Сообщить("Проблем подключения по COM Порту. Код ошибки: "+Строка(Result)+" ! Проверьте подключение!", СтатусСообщения.ОченьВажное);
			Сообщить(" -1 - ошибка (неверный номер порта – меньше 1 или больше 8)" + Символы.ПС+
					 " -2 – неверно указана скорость" + Символы.ПС+
					 " -3 – порт занят" + Символы.ПС+
					 " -4 – невозможно создать блок управления устройством" + Символы.ПС+
					 " -5 – ошибка установки параметров порта" + Символы.ПС+
					 " -7 – проблемы с лицензированием");

			флЕстьОшибка = 1 ;
		Конецесли;
		
		// Находим номер последнего запрограммированного артикула
		Если флЕстьОшибка = 0  тогда 
			Код = ВернутьКодПоследнегоЗапрограммированногоАртикулаФР();
			
			Если Код = 0 Тогда
				// Свойство возвращает информацию о первом запрограммированном артикуле.
				ПервыйКод =  ECRFisc.firstart();
				ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
					"Прочитали первый запрограммированный артикул. "+Строка(СтрокаДокументаЧекККМ.ЧекККМ));

				Если СтрДлина(ПервыйКод) = 0 тогда
					Код = 1;
				Иначе
					Для номерарт = 2 по 14800 цикл
						//свойство возвращает информацию о следующем запрограммированном артикуле.
						следкод = ECRFisc.nextart();
						Если стрдлина(следкод) = 0 тогда
							Код = номерарт;  прервать;
						Конецесли;
					Конеццикла;   
				Конецесли;
				
				ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
					"Нашли номер последнего запрограммированного артикула. "+Строка(СтрокаДокументаЧекККМ.ЧекККМ));
					
				ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(Код);
            КонецЕсли;
			
			// Если количество запрограммированных артикулов не привысило максимальное количество, то открываем фискальный чек 
			Если Код <= 14800 Тогда
				
				//откроем фискальный чек на ФР
				result = ECRFisc.OpenFiscReceipt(1,1,"0000");
				Если не Result тогда
					сообщить("Ошибка открытия чека продажи на ФР!");
					флЕстьОшибка = 1 ;
					//продолжить;
				Иначе
					// Объявляем переменные
					старртикул = 0;   ОбщаяСумма = 0; 				   
					
					// Перебираем все строки табличной части товары из Чека ККМ
					ОбъектЧекККМ = СтрокаДокументаЧекККМ.ЧекККМ.ПолучитьОбъект();
					Для Каждого СтрокаТЧ Из ОбъектЧекККМ.Товары Цикл
						//   код = код + 1; 
						Сумма 		= СтрокаТЧ.Сумма;
						Цена 		= Сумма / СтрокаТЧ.Количество;
						ОбщаяСумма 	= ОбщаяСумма + Сумма;
						НаименованиеТовара = Лев(СокрЛП(СтрокаТЧ.Номенклатура),24);
						
						// осуществим продажу по строке в чеке
						// Добавляем артикул
						res = ECRFisc.ProgramArt(192, Код, 1, Цена, "0000", НаименованиеТовара);
						
						ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
							"Запрограммировали артикул "+Строка(НаименованиеТовара));
						
						// В случае удачного добавления артикула, выводим строку на печать
						Если res Тогда							
							Result = ECRFisc.SellArtCashDS(True, код, строкатч.количество, 0,0);
							
							ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
								"Напечатали артикул "+Строка(НаименованиеТовара));

							
							Если не Result  тогда
								Сообщить("Ошибка при формировании продажи и выводе информации в строке фискального чека!" ,СтатусСообщения.ОченьВажное);
								флЕстьОшибка = 1;
								
								ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(0);

								// Анулируем фискальный чек
								ECRFisc.ReceiptCancel();
								// Закрываем  com порт
								ECRFisc.CloseComPort(1);
								Прервать;
							Иначе 
								Код = Код +1;
								
								ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(Код);

								Если Код > 14800 тогда
									
									ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(0);
									
									Сообщить("Достигнуто максимальное количество программируемых артикулов = 14800!", СтатусСообщения.Важное);
									Сообщить("Сделайте z-отчет!", СтатусСообщения.Важное);
									// Анулируем фискальный чек
									ECRFisc.ReceiptCancel();
									// Закрываем  com порт
									ECRFisc.CloseComPort(1);
									Прервать;
									
								КонецЕсли;
							КонецЕсли;
						Иначе
							Сообщить("Ошибка при добавлении нового артикула в ФР!" + Символы.ПС + "Товар: "+НаименованиеТовара ,СтатусСообщения.ОченьВажное);
							флЕстьОшибка = 1; 
							
							ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(0);
							
							// Анулируем фискальный чек
							ECRFisc.ReceiptCancel();
							// Закрываем  com порт
							ECRFisc.CloseComPort(1);
							Прервать;

						КонецЕсли;
						
						// Добавляем кодтовара из фискального регистратора в Строку Чека
						СтрокаТЧ.КодТовараФР = Код;
					КонецЦикла;
					
					// Пишем Номер, ИД чека из ФР
					Попытка
						ОбъектЧекККМ.НомерЧекаФР = Строка(ECRFisc.NumbRec());
					Исключение
					КонецПопытки;
                    						
					//регистрация продажи и закрытие чека
					ECRFisc.Payment(0, 0);
					
					ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
							"Сделали продажу "+Строка(ОбъектЧекККМ));

					// Закрываем фискальный чек
					Result = ECRFisc.CloseFiscReceipt();
					
					ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
							"Закрыли фискальный чек "+Строка(ОбъектЧекККМ));

					Если не Result Тогда
						Сообщить("Ошибка при закрытии фискального чека!");
						кодошибки = 1 ;
					Иначе
						// Пишем дату и время закрытия чека из ФР
						ПОПЫТКА
							ОбъектЧекККМ.ДатаЧекаФР  = ТекущаяДата();
						Исключение
						КонецПопытки;
					КонецЕсли;
					//закроем порт
					Result = ECRFisc.CloseComPort(1);
					
					ЗаписьЖурналаРегистрации("Печать Чеков КММ на ФР", УровеньЖурналаРегистрации.Информация, Метаданные.Документы.ЧекККМ, СтрокаДокументаЧекККМ.ЧекККМ,
							"Закрыли порт "+Строка(ОбъектЧекККМ));

					Если  не Result Тогда
						Сообщить("Ошибка закрытия порта!");
						кодошибки = 1 ;
					КонецЕсли;
					
					// Пишем Чек ККМ
					ОбъектЧекККМ.Записать(РежимЗаписиДокумента.Запись); 
				КонецЕсли;
			Иначе
				Сообщить("Достигнуто максимальное количество программируемых артикулов!");
				Сообщить("Сделайте z-отчет!");
				
				ЗаписатьКодПоследнегоДобавленногоАртикулаВФР(0);
				
				прервать;
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;	
	
	Сообщить("Печать чеков закончена!");	
 

Главная проблема состоит в том, что при добавлении нового чека в фискальный регистратор, нужно хранить код товара на стороне 1С. Иначе нужно при печати каждого чека искать код последнего добавленного товара в фискальный регистратор, что занимает огромное количество времени. Поэтому пока открыта обработка мы храним код последнего добавленного товара в фискальный регистратор. Так же для каждого Чека ККМ записываем Номер и Дату чека из Фискального регистратора. Что касается даты чека из ФР, то у используемой компоненты нет метода для возврата Даты, поэтому в момент печати чека сохраняем ТекущуюДату.

Вот Код печати Копии Чека:

ПолучитьТаблицуЧеков();
	
	флЕстьОшибка = 0;
	
	ECRFisc=Новый COMОбъект("DatecsECR.TECRFisc");
	

	// Перебираем все строки и печатаем отмеченные чеки
	Для каждого СтрокаДокументаЧекККМ из ТаблицаЧеков цикл 

		флЕстьОшибка = 0;
		
		Сообщить("Печать копии чека для "+СтрокаДокументаЧекККМ.Ссылка, СтатусСообщения.Информация);
		
		// 1. откроем порт
		Result = ECRFisc.SetComPort(1, 19200);
		
		Если Result <> 1 Тогда
			Сообщить("Проблем подключения по COM Порту. Код ошибки: "+Строка(Result)+" ! Проверьте подключение!", СтатусСообщения.ОченьВажное);
			Сообщить(" -1 - ошибка (неверный номер порта – меньше 1 или больше 8)" + Символы.ПС+
					 " -2 – неверно указана скорость" + Символы.ПС+
					 " -3 – порт занят" + Символы.ПС+
					 " -4 – невозможно создать блок управления устройством" + Символы.ПС+
					 " -5 – ошибка установки параметров порта" + Символы.ПС+
					 " -7 – проблемы с лицензированием");

			флЕстьОшибка = 1 ;
		Конецесли;
		
		// Если подключили com порт, то открываем на печать не фискальный чек
		Если флЕстьОшибка = 0  тогда 
				
			//откроем нефискальный чек на ФР
			Result = ECRFisc.OpenNonFiscReceipt();
			Если не Result тогда
				Сообщить("Ошибка открытия нефискального чека на ФР!");
				флЕстьОшибка = 1 ;
			Иначе
				// Объявляем переменные
				ОбщаяСумма = 0;
				
				// Печатаем шапку чека
				Result = ECRFisc.PrntNonFiscal("Копия Чека № "+СокрЛП(СтрокаДокументаЧекККМ.ЧекККМ.НомерЧекаФР));
				Попытка
					ДатаЧекаФР = СтрокаДокументаЧекККМ.ЧекККМ.ДатаЧекаФР;
					Result = ECRFisc.PrntNonFiscal("от "+СокрЛП(ДатаЧекаФР));
				Исключение
				КонецПопытки;
				Result = ECRFisc.PrntNonFiscal("");
				
				// Перебираем все строки табличной части товары из Чека ККМ
				Для Каждого СтрокаТЧ Из СтрокаДокументаЧекККМ.ЧекККМ.Товары Цикл
					Сумма 		= СтрокаТЧ.Сумма;
					Цена 		= Сумма / СтрокаТЧ.Количество;
					ОбщаяСумма 	= ОбщаяСумма + Сумма;
					НаименованиеТовара1 = Лев(СтрокаТЧ.Номенклатура,24);
					НаименованиеТовара2 = Сред(СтрокаТЧ.Номенклатура,25, 24);
					
					// Выводим коментарий в нефискальный чек
					Result = ECRFisc.PrntNonFiscal(НаименованиеТовара1);
					Если НЕ ПустаяСтрока(НаименованиеТовара2) Тогда
						Result = ECRFisc.PrntNonFiscal(НаименованиеТовара2);	
					КонецЕсли;
					
					Result = ECRFisc.PrntNonFiscal(Формат(СтрокаТЧ.Количество,"ЧЦ=7; ЧДЦ=2")+ " " + 
							СокрЛП(СтрокаТЧ.ЕдиницаИзмерения) + "  х"+Формат(Цена,"ЧЦ=10; ЧДЦ=2")+
							" = "+Формат(Сумма,"ЧЦ=10; ЧДЦ=2"));

					Если не Result  тогда
						Сообщить("Ошибка при печати нефискального чека!" ,СтатусСообщения.ОченьВажное);
						флЕстьОшибка = 1; 
						// Закрываем нефискальный чек
						ECRFisc.CloseNonFiscReceipt();
						// Закрываем  com порт
						ECRFisc.CloseComPort(1);
						Прервать;
					КонецЕсли;
				КонецЦикла;
				
				// Выводим общую сумму по чеку
				Result = ECRFisc.PrntNonFiscal("------------------------");
				Result = ECRFisc.PrntNonFiscal("СУММА"+Прав("                        " +Формат(ОбщаяСумма,"ЧЦ=10; ЧДЦ=2"),19));
				Result = ECRFisc.PrntNonFiscal("ПДВ А  0,00%         0,00");
				Result = ECRFisc.PrntNonFiscal("Сумма ПДВ"+Прав("                        " +Формат(СтрокаДокументаЧекККМ.Ссылка.Товары.Итог("СуммаНДС"),"ЧЦ=10; ЧДЦ=2"),15));
				Result = ECRFisc.PrntNonFiscal("------------------------");
				Result = ECRFisc.PrntNonFiscal("     СЛУЖЕБНЫЙ ЧЕК     ");
				
				// Закрываем нефискальный чек
				Result = ECRFisc.CloseNonFiscReceipt();
				Если не Result Тогда
					Сообщить("Ошибка при закрытии нефискального чека!");
					кодошибки = 1 ;
				КонецЕсли;
				
				//закроем порт
				Result = ECRFisc.CloseComPort(1);
				Если  не Result Тогда
					Сообщить("Ошибка закрытия порта!");
					кодошибки = 1 ;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
		Если кодошибки = 0 Тогда
			СтрокаДокументаЧекККМ.флНапечатать = ложь;
		КонецЕсли;
	КонецЦикла;	
	
	Сообщить("Печать копии чеков закончена!");
 

Так же буду очень признателен за продуктивную критику по работе с компонентой, может, есть какие-то методы, которые я не учел (не нашел)  и которые бы очень сильно облегчили разработку. К примеру, вытащить копию чека по номеру или вытащить дату чека.

Использование встроенных механизмов из типовых конфигураций специально не рассматривается ввиду автономности данной обработки, хотя и не универсальности.

DatecsECR Чек ККМ фискальный регистратор

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 1.6 1С:Бухгалтерия автономного учреждения 1С:CRM ПРОФ, КОРП Россия Платные (руб)

Универсальная обработка для обслуживания любых фискальных регистраторов (ККТ), в том числе Веб сервер АТОЛ. Работает в соответствии с 54-ФЗ. (ФФД 1.0, ФФД 1.05, ФФД 1.1). Подключайте любую онлайн кассу к практически любой конфигурации. Нет необходимости обновлять 1С. Можно бесплатно скачать и протестировать. Может работать одновременно с несколькими онлайн-кассами, либо одной с разных рабочих мест. (через RDP, TCP\IP или веб-сервер) Позволяет разделить один чек сразу на несколько ККТ или на несколько систем налогообложения. Поддерживает разрешительный режим. Можно настроить собственный шаблонов чека. Можно использовать эквайринг там, где он не поддерживается. Работает на LINUX и Windows ЭМУЛЯТОР + ЭКВАЙРИНГ + МАРКИРОВКА + ПОДДЕРЖКА ФФД 1.2

6000 руб.

27.02.2017    796342    4903    9546    

2858

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение конфигурации для УТ 11.5, КА 2.5 ,ERP 2.5 (Управляемые формы) позволяет выполнять печать кассовых чеков на одну ККМ 54-ФЗ с нескольких рабочих мест. НИКАКИХ НАСТРОЕК В РАЗРАБОТКЕ - ПОДКЛЮЧИЛ И ПЕЧАТАЙ. Если у вас несколько отделов и одна ККМ - печатайте на одной ККМ! Если у вас две ККМ и одна поломалась - печатайте на одной ККМ, пока ремонтируете другую!

4500 руб.

27.08.2018    122190    1025    584    

864

SALE! 25%

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия автономного учреждения Россия Платные (руб)

Обработка осуществляет обслуживание ККТ АТОЛ, Штрих, Вики Принт и Меркурий для конфигураций "УТ 10.3", "КА 1.1", "УПП 1.3", "Розница 1.0", "БП 2.0" и других отраслевых решений, построенных на основе указанных выше конфигурациях. Поддерживает возможность параллельно пробития чеков на одной ККМ несколькими пользователями. Поддерживает Веб-сервер Атол. Соответствует требованиям 54-ФЗ. Поддерживает ФФД 1.0, 1.05, 1.1 и 1.2. Разделяет чеки по нескольким СНО. Поддерживает механизмы подключения ККТ по TCP/IP, для работы через RDP или интернет. Поддержка маркировки и разрешительного режима.

5880 4410 руб.

25.05.2015    335552    1956    3058    

1031

ККМ Розничная торговля Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен между 1С:Розница и Frontol 6 при торговле от нескольких организаций, а также ряд других полезных функций. Данный модуль синхронизации незаменим для тех, кто ведёт учет по нескольким организациям в 1С:Розница, а на РМК (рабочем месте кассира) установлен Frontol или планируется его установка. Подходит для 1С:Розница 2.3 / 3.0, 1С:УНФ 3.0

1800 руб.

22.03.2019    84029    509    478    

182

ККМ Кассовые операции Розничная торговля Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Платные (руб)

«Сервер ККМ» позволяет приложениям работать с фискальными регистраторами по локальной сети или интернет, организовать печать на одном ККМ с нескольких рабочих мест. Поддержка драйверов Атол, Штрих и VikiPrint. Поддержка 54-ФЗ и разрешительного режима, ФФД 1.05,1.2. Подключается к 1С Торговля и склад 7.7, 1С:УТ 10/11, 1С:УНФ, 1С:Розница 1/2, 1С:БП 2/3, 1С КА 1/2., 1С:ERP, УПП. Ускоряет печать из терминального сеанса Windows. Работает с разрешительным режимом даже из старых конфигураций. Предоставляет REST API для печати через веб-сервис.

3000 руб.

02.09.2016    136455    152    193    

181

Кассовые операции ККМ Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Платные (руб)

Расширение для 1С:Управление торговлей 11.5, которое позволяет пробивать чеки ККМ и списывать товар с разных складов. Склад списание товара можно указывать в табличной части рабочего места кассира (РМК).

5880 руб.

12.04.2023    9335    44    3    

36

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Розница 3.0 Россия Платные (руб)

Обработки осуществляют обслуживание фискальных регистраторов, поддерживаемых драйвером "АТОЛ: Драйвер ККМ v.10.10", "ШТРИХ-М: Драйвер ККМ v 5.16", "ВИКИ: Драйвер CSI v 1.6", для конфигураций БП, УТ, КА, УПП, "Розница 3.0", соответствующих требованиям закона ФЗ-54 о применении контрольно-кассовой техники.Поддержка НДС 20%. Поддержка маркировки 488-ФЗ. Марки. Акциз. Честный знак. Разрешительный режим.

5040 руб.

02.02.2017    276494    557    2375    

558

Кассовые операции ККМ Системный администратор Программист Бухгалтер Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями включена 1 лицензия Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

4800 руб.

31.07.2017    170854    589    605    

204
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Иваныч 23 31.07.17 12:36 Сейчас в теме
2. hromovanton 7 09.08.17 11:37 Сейчас в теме
Нет, только по 1С 8. Я думаю переделать не составит особого труда.
Оставьте свое сообщение