Есть ДБФ-файл (остатки товаров из бухучета). Нужно его в Торговле загрузить в док ВводОстаткоТоваров.
**************************
В доке есть кнопка которая открывает обработку:
//******************
Процедура ЗагрузитьОстатки()
Конт = глВзятьКонтекст(Контекст);
Если КоличествоСтрок()> 0 Тогда
УдалитьСтроки();
КонецЕсли;
ОткрытьФормуМодально("Отчет.ЗагрузкаОстатковТоваров",Конт);
Если ТипЗначенияСтр(Конт) <> "ТаблицаЗначений" Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Конт.ВыбратьСтроки();
Пока Конт.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Товар = Конт.Товар;
Количество = Конт.Количество;
ЦенаБезНДС = Конт.ЦенаБезНДС;
СуммаБезНДС = Конт.СуммаБезНДС;
КонецЦикла;
КонецПроцедуры
******************************
код обработки:
фДБФ = СоздатьОбъект("XBase");
Попытка
фДБФ.ОткрытьФайл(Шлях, ,1);
Исключение
Возврат;
КонецПопытки;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Товар");
ТЗ.НоваяКолонка("Количество");
ТЗ.НоваяКолонка("СуммаБезНДС");
ТЗ.НоваяКолонка("ЦенаБезНДС");
ФДБФ.КодоваяСтраница(0);
фДБФ.Первая();
Пока фДБФ.вКонце() = 0 Цикл
(*) Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
СпрТов = СоздатьОбъект("Справочник.Номенклатура");
Если (СпрТов.НайтиПоКоду(Число(фДБФ.KodTov),0)=1) и (фДБФ.KTov <> 0) Тогда
ТЗ.НоваяСтрока();
ТЗ.Товар = СпрТов.ТекущийЭлемент();
ТЗ.Количество = фДБФ.KTov;
ТЗ.ЦенаБезНДС = фДБФ.STov/фДБФ.KTov;
ТЗ.СуммаБезНДС = фДБФ.STov;
//
//
КонецЕсли;
фДБФ.Предыдущая(); //фДБФ.Следующая();
Иначе
фДБФ.Предыдущая(); //фДБФ.Следующая();
КонецЕсли;
КонецЦикла;
фДБФ.ЗакрытьФайл();
*******************************
почему на строку:
Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
выдет ошибку:
Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
{Отчет.ЗагрузкаОстатковТоваров.Форма.Модуль(23)}: Перед выполнением операции установите объект на запись!
**************************
В доке есть кнопка которая открывает обработку:
//******************
Процедура ЗагрузитьОстатки()
Конт = глВзятьКонтекст(Контекст);
Если КоличествоСтрок()> 0 Тогда
УдалитьСтроки();
КонецЕсли;
ОткрытьФормуМодально("Отчет.ЗагрузкаОстатковТоваров",Конт);
Если ТипЗначенияСтр(Конт) <> "ТаблицаЗначений" Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Конт.ВыбратьСтроки();
Пока Конт.ПолучитьСтроку() = 1 Цикл
НоваяСтрока();
Товар = Конт.Товар;
Количество = Конт.Количество;
ЦенаБезНДС = Конт.ЦенаБезНДС;
СуммаБезНДС = Конт.СуммаБезНДС;
КонецЦикла;
КонецПроцедуры
******************************
код обработки:
фДБФ = СоздатьОбъект("XBase");
Попытка
фДБФ.ОткрытьФайл(Шлях, ,1);
Исключение
Возврат;
КонецПопытки;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Товар");
ТЗ.НоваяКолонка("Количество");
ТЗ.НоваяКолонка("СуммаБезНДС");
ТЗ.НоваяКолонка("ЦенаБезНДС");
ФДБФ.КодоваяСтраница(0);
фДБФ.Первая();
Пока фДБФ.вКонце() = 0 Цикл
(*) Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
СпрТов = СоздатьОбъект("Справочник.Номенклатура");
Если (СпрТов.НайтиПоКоду(Число(фДБФ.KodTov),0)=1) и (фДБФ.KTov <> 0) Тогда
ТЗ.НоваяСтрока();
ТЗ.Товар = СпрТов.ТекущийЭлемент();
ТЗ.Количество = фДБФ.KTov;
ТЗ.ЦенаБезНДС = фДБФ.STov/фДБФ.KTov;
ТЗ.СуммаБезНДС = фДБФ.STov;
//
//
КонецЕсли;
фДБФ.Предыдущая(); //фДБФ.Следующая();
Иначе
фДБФ.Предыдущая(); //фДБФ.Следующая();
КонецЕсли;
КонецЦикла;
фДБФ.ЗакрытьФайл();
*******************************
почему на строку:
Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
выдет ошибку:
Если (СокрЛП(фДБФ.MZ) = СокрЛП(Конт.Склад.Наименование)) Тогда
{Отчет.ЗагрузкаОстатковТоваров.Форма.Модуль(23)}: Перед выполнением операции установите объект на запись!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот