Загрузка данных из Algoritm-S в конфигурацию "Бухгалтерия предприятия 3.0 (3.0.79.21) "

04.08.20

Учетные задачи - Розничная торговля

В статье представлен шаблон обработки для загрузки некоторых данных из программы Algoritm-S в конфигурацию "Бухгалтерия предприятия 3.0 (3.0.79.21)

Доброго времени суток! Данная статья является шаблоном для разработки обработки - загрузки данных из программного продукта Algoritm-S, она призвана облегчить труды и сэкономить время, данный код можно использовать, как законченный продукт, а можно дорабатывать по своим требованиям и желаниям. Пример будет рассмотрен на конфигурации "Бухгалтерия предприятия 3.0 (3.0.79.21), возможно подойдет и для других с идентичными метаданными. 

Что имеем:

-файлы выгрузки из Algoritm-S в формате *.dbf;

-PROD.DBF - файл выгрузки номенклатуры;

-KONTR.DBF - файл выгрузки контрагентов;

-INC.DBF - файл выгрузки документов поступлений;

-ROUT.DBF - файл выгрузки документов продажи;

 

Создадим внешнюю обработку, разработаем самую простую форму с минимальными набором реквизитов:

Добавим команду загрузить и привяжем ее к процедуре загрузить()

Для элемента формы ДиалогВыбораФайла назначим обработчик для события НачалоВыбора

В модуле формы должна располагаться следующая процедура:

&НаКлиенте
Процедура ДиалогВыбораФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	Диалог.Заголовок = "Выберите каталог";
	Диалог.МножественныйВыбор = Ложь; 
	
	Если Диалог.Выбрать() Тогда
		ПутьКФайлу = Диалог.ПолноеИмяФайла;
	КонецЕсли;	
	
КонецПроцедуры

Логика данного шаблона, в следующем, пользователь выбирает каталог, ищем в каталоге файлы с названиями выгрузок, обрабатываем загрузку.

 

По команде загрузить будем перебирать файлы в каталоге и искать необходимые:

&НаКлиенте
Процедура Загрузить(Команда)
	ЗагрузитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере()
	
    МассивНайденныхФайлов = НайтиФайлы(ПутьКФайлу,  "*.dbf", Ложь);
	
	ФайлНоменклатуры = Неопределено;
	ФайлКонтрагентов = Неопределено;
	ФайлПриходов = Неопределено;
	ФайлПродаж = Неопределено;
	
    Для Каждого Файл Из МассивНайденныхФайлов Цикл
		
		Если СтрНайти(Файл.ПолноеИмя, "PROD.DBF") Тогда 
			ФайлНоменклатуры = Файл.ПолноеИмя;
		КонецЕсли;
		
		Если СтрНайти(Файл.ПолноеИмя, "KONTR.DBF") Тогда 
			ФайлКонтрагентов = Файл.ПолноеИмя;
		КонецЕсли;
		
		Если СтрНайти(Файл.ПолноеИмя, "INC.DBF") Тогда 
			ФайлПриходов = Файл.ПолноеИмя;
		КонецЕсли;
		
		Если СтрНайти(Файл.ПолноеИмя, "ROUT.DBF") Тогда 
			ФайлПродаж = Файл.ПолноеИмя;
		КонецЕсли;
		
	КонецЦикла;
	
	Если ФайлНоменклатуры <> Неопределено Тогда
		Попытка
			ЗагрузитьНоменклатуру(ФайлНоменклатуры);
			Сообщить("Номенклатура успешно загружена");
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;
	
	Если ФайлКонтрагентов <> Неопределено Тогда
		Попытка
			ЗагрузитьКонтрагентов(ФайлКонтрагентов);
			Сообщить("Контрагенты успешно загружены");
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;

	Если ФайлПриходов <> Неопределено Тогда
		Попытка
			ЗагрузитьПоступления(ФайлПриходов);
			Сообщить("Поступления успешно загружены");
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;	
	
	Если ФайлПродаж <> Неопределено Тогда
		Попытка
			ЗагрузитьПродажи(ФайлПродаж);
			Сообщить("Продажи успешно загружены");
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;	
	
		
КонецПроцедуры

Сама функция по загрузке DBF-файла так же взята из шаблона (Публикация № 103060, спасибо автору) и немного доработана под нужды:

&НаСервере
Функция ЗаполнитьТЗизDBF(ИмяФайла, Кодировка, СписокКолонок)
	
	ФайлДанных = Новый XBase();
	ФайлДанных.ОткрытьФайл(ИмяФайла,,Истина);
	ФайлДанных.Кодировка = Кодировка;
	Если Не ФайлДанных.Открыта() Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Произошла ошибка при открытии файла " + ИмяФайла;
		Сообщение.Сообщить();
		Возврат Неопределено;
	КонецЕсли;
	
	ОписаниеБулево = Новый ОписаниеТипов("Булево");
	ОписаниеДаты = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата));
	
	ТабЗнач = Новый ТаблицаЗначений;
	Для Каждого Поле из ФайлДанных.Поля Цикл
		Колонка = СписокКолонок.НайтиПоЗначению(Поле.Имя);
		Если Колонка <> Неопределено Тогда
			Если Поле.Тип = "L" Тогда
				Тип = ОписаниеБулево;
			ИначеЕсли Поле.Тип = "D" Тогда
				Тип = ОписаниеДаты;
			ИначеЕсли (Поле.Тип = "N") ИЛИ (Поле.Тип = "F") ИЛИ (Поле.Тип = "S") Тогда
				Тип = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(Поле.Длина));
			Иначе
				Тип = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(Поле.Длина));
			КонецЕсли;
			
			Если СтрНайти(Колонка.Представление,"Цена") > 0 ИЛИ СтрНайти(Колонка.Представление,"Сумма") > 0 ИЛИ СтрНайти(Колонка.Представление,"Количество") > 0 Тогда
				ТабЗнач.Колонки.Добавить(Колонка.Представление, Новый ОписаниеТипов("Число"));
			Иначе
				ТабЗнач.Колонки.Добавить(Колонка.Представление, Тип);
			КонецЕсли;
		
		КонецЕсли;
	КонецЦикла;
	
	Если (ТабЗнач.Колонки.Количество() <> 0) И (ФайлДанных.Первая()) Тогда
		Пока Истина Цикл
			СтрокаТаб = ТабЗнач.Добавить();
			Для Каждого Поле из ФайлДанных.Поля Цикл
				Колонка = СписокКолонок.НайтиПоЗначению(Поле.Имя);
				Если (Колонка <> Неопределено) И Колонка.Пометка Тогда
					СтрокаТаб[Колонка.Представление] = ФайлДанных[Поле.Имя];
				КонецЕсли;
			КонецЦикла;
			Если Не ФайлДанных.Следующая() Тогда Прервать; КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	ФайлДанных.ЗакрытьФайл();
	Возврат ТабЗнач;
	
КонецФункции

Далее идут процедуры загрузки, а загружаются:

-справочник номенклатура;

-справочник контрагенты;

-документ поступление товар и услуг;

-документ отчет о розничных продажах;

 

В процедурах в списке колонок определяем структуру нашего DBF-файла выгрузки, остальное думаю понятно

Процедура ЗагрузитьПродажи(ФайлПродаж)
	
	Кодировка = КодировкаXBase.OEM ;
	
	СписокКолонок = Новый СписокЗначений;
	СписокКолонок.Добавить("PROD_ID", "КодТовара", Истина);
	СписокКолонок.Добавить("OUT_H_ID", "КодДокумента", Истина);
	СписокКолонок.Добавить("DATE_SALE", "ДатаПродажи", Истина);
	СписокКолонок.Добавить("OPER_ID", "ИДОперации", Истина);
	СписокКолонок.Добавить("OUT_CNT", "Количество", Истина);
	СписокКолонок.Добавить("NDS_SIZE", "СтавкаНДС", Истина);
	СписокКолонок.Добавить("INC_NDS", "СуммаНДС", Истина);
	СписокКолонок.Добавить("INC_W", "Цена", Истина);
	СписокКолонок.Добавить("SUM_NO_SK", "Сумма", Истина);	
	
	ТЗ = ЗаполнитьТЗизDBF(ФайлПродаж, Кодировка, СписокКолонок);	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТЗ.КодТовара КАК КодТовара,
	|	ТЗ.КодДокумента КАК КодДокумента,
	|	ТЗ.ДатаПродажи КАК ДатаПродажи,
	|	ТЗ.ИДОперации КАК ИДОперации,
	|	ТЗ.Количество КАК Количество,
	|	ТЗ.СтавкаНДС КАК СтавкаНДС,
	|	ТЗ.СуммаНДС КАК СуммаНДС,
	|	ТЗ.Цена КАК Цена,
	|	ТЗ.Сумма КАК Сумма
	|ПОМЕСТИТЬ ВТ
	|ИЗ
	|	&ТЗ КАК ТЗ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ.КодТовара КАК КодТовара,
	|	ВТ.КодДокумента КАК КодДокумента,
	|	ВТ.ДатаПродажи КАК ДатаПродажи,
	|	ВТ.ИДОперации КАК ИДОперации,
	|	СУММА(ВТ.Количество) КАК Количество,
	|	ВТ.СтавкаНДС КАК СтавкаНДС,
	|	СУММА(ВТ.СуммаНДС) КАК СуммаНДС,
	|	СРЕДНЕЕ(ВТ.Цена) КАК Цена,
	|	СУММА(ВТ.Сумма) КАК Сумма
	|ИЗ
	|	ВТ КАК ВТ
	|
	|СГРУППИРОВАТЬ ПО
	|	ВТ.КодТовара,
	|	ВТ.КодДокумента,
	|	ВТ.ДатаПродажи,
	|	ВТ.ИДОперации,
	|	ВТ.СтавкаНДС
	|ИТОГИ ПО
	|	ДатаПродажи";
	
	Запрос.УстановитьПараметр("ТЗ", ТЗ);
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаКодДокумента = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	ДатаНакладной = "20001010";
	
	Пока ВыборкаКодДокумента.Следующий() Цикл
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ОтчетОРозничныхПродажах.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
		|ГДЕ
		|	ОтчетОРозничныхПродажах.Дата = &Дата";
		
		Запрос.УстановитьПараметр("Дата", ВыборкаКодДокумента.ДатаПродажи);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Если ВыборкаДетальныеЗаписи.Следующий() Тогда
			Документ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		Иначе
			Документ = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
		КонецЕсли;	
		
		Документ.ВидОперации = Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетККМОПродажах;
		Документ.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("руб");
		Документ.Организация = Объект.Организация;
		Документ.Склад = Объект.Склад;
		Документ.СчетКасса = ПланыСчетов.Хозрасчетный.Касса;
		Документ.ДокументБезНДС = Ложь;
		Документ.СуммаВключаетНДС = Истина;
		
		ВыборкаДетальныеЗаписи = ВыборкаКодДокумента.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			
			Документ.Дата = ВыборкаДетальныеЗаписи.ДатаПродажи;
			
			СтрТЧ = Документ.Товары.Добавить();
			СтрТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Лев(ВыборкаДетальныеЗаписи.КодТовара,11));
			СтрТЧ.Количество = ВыборкаДетальныеЗаписи.Количество;
			СтрТЧ.Цена = ВыборкаДетальныеЗаписи.Цена;
			СтрТЧ.Сумма = ВыборкаДетальныеЗаписи.Сумма + ВыборкаДетальныеЗаписи.СуммаНДС;
			СтрТЧ.СуммаНДС = ВыборкаДетальныеЗаписи.СуммаНДС;
			
			Если ВыборкаДетальныеЗаписи.СтавкаНДС = "10" Тогда
				СтавкаНДС = Перечисления.СтавкиНДС.НДС10;
			ИначеЕсли ВыборкаДетальныеЗаписи.СтавкаНДС = "20" Тогда
				СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
			Иначе СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
			КонецЕсли;
			
			СтрТЧ.СтавкаНДС = СтавкаНДС;
			ДатаНакладной = ВыборкаКодДокумента.ДатаПродажи;
			
			Если ВыборкаДетальныеЗаписи.ИДОперации = "545" Тогда
				СтрОплаты = Документ.Оплата.Добавить();
				СтрОплаты.ВидОплаты = Справочники.ВидыОплатОрганизаций.НайтиПоНаименованию("Эквайринг");
				СтрОплаты.СуммаОплаты  = ВыборкаДетальныеЗаписи.Сумма + ВыборкаДетальныеЗаписи.СуммаНДС;
			КонецЕсли;
			
		КонецЦикла;
		
		СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаРасчетов(Документ);
		СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаВТабличнойЧасти(Документ, "Товары");
		
		Попытка 
			Документ.Записать(РежимЗаписиДокумента.Проведение);
		Исключение
			Документ.Записать(РежимЗаписиДокумента.Запись);
		КонецПопытки;
		
	КонецЦикла;
	
КонецПроцедуры

Процедура ЗагрузитьНоменклатуру(ФайлНоменклатуры)
	
	Кодировка = КодировкаXBase.OEM ;
	
	СписокКолонок = Новый СписокЗначений;
	СписокКолонок.Добавить("PR_ID", "Код", Истина);
	СписокКолонок.Добавить("PROD_N", "Наименование", Истина);
	СписокКолонок.Добавить("MEAS_N", "ЕдиницаИзмерения", Истина);
	
	ТЗ = ЗаполнитьТЗизDBF(ФайлНоменклатуры, Кодировка, СписокКолонок);
	
	Для Каждого Стр из ТЗ Цикл
		
		Об = Справочники.Номенклатура.СоздатьЭлемент();
		Об.Код = Лев(Стр.Код,11);
		Об.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар");
		Об.Наименование = СокрЛП(Стр.Наименование);
		Об.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("Шт");
		Об.ОбменДанными.Загрузка = Истина;
		
		Если Справочники.Номенклатура.НайтиПоКоду(Лев(Стр.Код,11)) = Справочники.Номенклатура.ПустаяСсылка() Тогда
			Об.Записать();
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Процедура ЗагрузитьКонтрагентов(ФайлКонтрагентов)
	
	Кодировка = КодировкаXBase.OEM ;
	
	СписокКолонок = Новый СписокЗначений;
	СписокКолонок.Добавить("INN", "ИНН", Истина);
	СписокКолонок.Добавить("PART_N", "Наименование", Истина);
	СписокКолонок.Добавить("PART_ID", "Код", Истина);
	
	
	ТЗ = ЗаполнитьТЗизDBF(ФайлКонтрагентов, Кодировка, СписокКолонок);
	
	Для Каждого Стр из ТЗ Цикл
		
		Об = Справочники.Контрагенты.СоздатьЭлемент();
		Об.Код = Лев(Стр.Код,9);
		Об.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
		Об.СтранаРегистрации = Справочники.СтраныМира.Россия;
		Об.Наименование = СокрЛП(Стр.Наименование);
		Об.ИНН = СокрЛП(Стр.ИНН);
		Об.ОбменДанными.Загрузка = Истина;
		Если Справочники.Контрагенты.НайтиПоКоду(Лев(Стр.Код,9)) = Справочники.Контрагенты.ПустаяСсылка() Тогда
			Об.Записать();
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Процедура ЗагрузитьПоступления(ФайлПриходов)
	
	Кодировка = КодировкаXBase.OEM ;
	
	СписокКолонок = Новый СписокЗначений;
	СписокКолонок.Добавить("PART_ID", "КодКонтрагента", Истина);
	СписокКолонок.Добавить("H_NUM", "КодДокумента", Истина);
	СписокКолонок.Добавить("PROD_ID", "КодТовара", Истина);
	СписокКолонок.Добавить("H_DATE", "ДатаДокумента", Истина);
	СписокКолонок.Добавить("INC_CNT", "Количество", Истина);
	СписокКолонок.Добавить("NDS_SIZE", "СтавкаНДС", Истина);
	СписокКолонок.Добавить("INC_NO", "ЦенаСНДС", Истина);
	СписокКолонок.Добавить("INC_NDS", "СуммаНДС", Истина);
	СписокКолонок.Добавить("INC_SUM_W", "СуммаСНДС", Истина);
	
	ТЗ = ЗаполнитьТЗизDBF(ФайлПриходов, Кодировка, СписокКолонок);
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТЗ.КодКонтрагента КАК КодКонтрагента,
	|	ТЗ.КодДокумента КАК КодДокумента,
	|	ТЗ.ДатаДокумента КАК ДатаДокумента,
	|	ТЗ.Количество КАК Количество,
	|	ТЗ.СтавкаНДС КАК СтавкаНДС,
	|	ТЗ.СуммаНДС КАК СуммаНДС,
	|	ТЗ.ЦенаСНДС КАК ЦенаСНДС,
	|	ТЗ.СуммаСНДС КАК СуммаСНДС,
	|	ТЗ.КодТовара КАК КодТовара
	|ПОМЕСТИТЬ ВТ
	|ИЗ
	|	&ТЗ КАК ТЗ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ.КодКонтрагента КАК КодКонтрагента,
	|	ВТ.КодДокумента КАК КодДокумента,
	|	ВТ.ДатаДокумента КАК ДатаДокумента,
	|	СУММА(ВТ.Количество) КАК Количество,
	|	ВТ.СтавкаНДС КАК СтавкаНДС,
	|	СУММА(ВТ.СуммаНДС) КАК СуммаНДС,
	|	СРЕДНЕЕ(ВТ.ЦенаСНДС) КАК ЦенаСНДС,
	|	СУММА(ВТ.СуммаСНДС) КАК СуммаСНДС,
	|	ВТ.КодТовара КАК КодТовара
	|ИЗ
	|	ВТ КАК ВТ
	|
	|СГРУППИРОВАТЬ ПО
	|	ВТ.КодКонтрагента,
	|	ВТ.КодДокумента,
	|	ВТ.ДатаДокумента,
	|	ВТ.СтавкаНДС,
	|	ВТ.КодТовара
	|ИТОГИ ПО
	|	КодДокумента";
	
	Запрос.УстановитьПараметр("ТЗ", ТЗ);
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаКодДокумента = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	НомерНакладной = "";
	
	Пока ВыборкаКодДокумента.Следующий() Цикл
		
		Если НомерНакладной <> ВыборкаКодДокумента.КодДокумента Тогда
			НайденныйДокумент = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Лев(ВыборкаКодДокумента.КодДокумента,11));
			Если НайденныйДокумент = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка() Тогда
				Документ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
			Иначе
				Документ = НайденныйДокумент.ПолучитьОбъект();
			КонецЕсли;
		Иначе
			Документ = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(НомерНакладной).ПолучитьОбъект();
		КонецЕсли;
		
		Документ.Номер = Лев(ВыборкаКодДокумента.КодДокумента, 11);
		Документ.НомерВходящегоДокумента = Лев(ВыборкаКодДокумента.КодДокумента, 11);
		Документ.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
		Документ.Организация = Объект.Организация;
		Документ.Склад = Объект.Склад;
		
		ВыборкаДетальныеЗаписи = ВыборкаКодДокумента.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			
			Документ.Контрагент = Справочники.Контрагенты.НайтиПоКоду(Лев(ВыборкаДетальныеЗаписи.КодКонтрагента,9));
			Документ.Дата = ВыборкаДетальныеЗаписи.ДатаДокумента;
			Документ.ДатаВходящегоДокумента = ВыборкаДетальныеЗаписи.ДатаДокумента;
			
			СтрТЧ = Документ.Товары.Добавить();
			СтрТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(Лев(ВыборкаДетальныеЗаписи.КодТовара,11));
			СтрТЧ.Количество = ВыборкаДетальныеЗаписи.Количество;
			СтрТЧ.Цена = ВыборкаДетальныеЗаписи.ЦенаСНДС;
			СтрТЧ.Сумма = ВыборкаДетальныеЗаписи.СуммаСНДС;
			СтрТЧ.СуммаНДС = ВыборкаДетальныеЗаписи.СуммаНДС;
			
			Если ВыборкаДетальныеЗаписи.СтавкаНДС = "10" Тогда
				СтавкаНДС = Перечисления.СтавкиНДС.НДС10;
			ИначеЕсли ВыборкаДетальныеЗаписи.СтавкаНДС = "20" Тогда
				СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
			Иначе СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
			КонецЕсли;
			
			СтрТЧ.СтавкаНДС = СтавкаНДС;
			НомерНакладной = Лев(ВыборкаКодДокумента.КодДокумента,11);
			
		КонецЦикла;
		
		СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаРасчетов(Документ);
		СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаВТабличнойЧасти(Документ, "Товары");
		
		Попытка 
			Документ.Записать(РежимЗаписиДокумента.Проведение);
		Исключение
			Документ.Записать(РежимЗаписиДокумента.Запись);
		КонецПопытки;
		
	КонецЦикла;
	
КонецПроцедуры

 

Собственно и все, получаем простейшую рабочую обработку по загрузке номенклатуры, контрагентов, поступлений товаров и услуг, отчетов о розничных продажах, доводим ее до красоты, и экономим время)) Надеюсь кому-нибудь пригодится

Algoritm-S DBF

См. также

ККМ Кассовые операции Розничная торговля Системный администратор Программист Платформа 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    796463    4903    9546    

2859

SALE! 20%

Оптовая торговля Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 7176 руб.

15.12.2015    170814    955    364    

400

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    20666    20    49    

38

ККМ Кассовые операции Розничная торговля Обмен с ГосИС Программист Бухгалтер Пользователь Бухгалтерский учет Оперативный учет Управляемые формы 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    122275    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    335583    1957    3058    

1031

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13739    13    48    

25

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

48000 руб.

24.04.2017    51037    101    165    

89