Консультация № 159598
04.02.2009, 13:26
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты!
Есть процедура формирования отчета (Инвентарная ведомость) по остаткам ТМЦ на складе (Код,ТМЦ,Количество,Сумма). Как можно добавить в отчет ЕдиницуИзмерения для каждого ТМЦ?
Заранее спасибо!

Приложение:
Процедура Сформировать()
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Если Фирма.Выбран() = 1 Тогда
Ит.ИспользоватьРазделительУчета(Фирма);
Фирма.ИспользоватьДату(ДатаОтчета);
КонецЕсли;
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ИспользоватьФормат("Ч-15.0>");

Таб.ВывестиСекцию("Шапка");
Если Счет.Выбран() = 1 Тогда
Если Счет.Количественный = 0 Тогда
Сообщить("По рахунку "+Счет.Код+" не ведеться кількісний облік","!!!");
Возврат;
КонецЕсли;
Иначе
Сообщить("Потрібно вибрати рахунок","!!!");
Возврат;
КонецЕсли;

Если ПустЗнач(Счет.ВидСубконто(1)) = 1 Тогда
Сообщить("По рахунку "+Счет.Код+" не ведеться аналітичний облік","!!!");
Возврат;
КонецЕсли;

Если Сотрудник.Выбран() = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(2),Сотрудник);
Иначе
Ит.ИспользоватьСубконто(Счет.ВидСубконто(2),);
КонецЕсли;
Если ТМЦ.Выбран() = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),ТМЦ);
Иначе
Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),);
КонецЕсли;
Если ПоПартиям = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(3),);
КонецЕсли;
Ит.ВключатьСубсчета(1,1);
Ит.ВыполнитьЗапрос(ДатаОтчета,ДатаОтчета,Счет,,,1,,5);
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
Сотр = Ит.Субконто(1);
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Таб.ВывестиСекцию("Сотрудник");
Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2) = 1 Цикл
Продукт = Ит.Субконто(2);
Если Продукт.ЭтоГруппа() = 1 Тогда
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Таб.ВывестиСекцию("Группа");
Иначе
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Арт = Продукт.ПолныйКод();
Если Средняя = 1 Тогда
Цена = ?(Кол <> 0,Сальдо/Кол,0);
Иначе
Цена = Продукт.ТекущийЭлемент().Цена;
КонецЕсли;
Таб.ВывестиСекцию("Товар");
Если ПоПартиям = 1 Тогда
Ит.ВыбратьСубконто(3);
Пока Ит.ПолучитьСубконто(3) = 1 Цикл
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Партия = Ит.Субконто(3);
Если Кол = 0 Тогда
Цена = 0;
Иначе
Цена = Сальдо/Кол;
КонецЕсли;
Таб.ВывестиСекцию("Партия");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Таб.ПараметрыСтраницы(1,,,,,,,,,);
Таб.ВывестиСекцию("Подвал");
Таб.Опции(0,0,7,0);
Таб.Защита(1);
Таб.ТолькоПросмотр(1);
Таб.Показать("Залишки ТМЦ","");
КонецПроцедуры

Обсуждение

Неизвестный
04.02.2009, 14:46
общий
это ответ
Здравствуйте, Slava Hl!
См. приложение
В приложении добавлены коменты куда чего добавить.

Приложение:
Процедура Сформировать()
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Если Фирма.Выбран() = 1 Тогда
Ит.ИспользоватьРазделительУчета(Фирма);
Фирма.ИспользоватьДату(ДатаОтчета);
КонецЕсли;
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ИспользоватьФормат("Ч-15.0>");

Таб.ВывестиСекцию("Шапка");
Если Счет.Выбран() = 1 Тогда
Если Счет.Количественный = 0 Тогда
Сообщить("По рахунку "+Счет.Код+" не ведеться кількісний облік","!!!");
Возврат;
КонецЕсли;
Иначе
Сообщить("Потрібно вибрати рахунок","!!!");
Возврат;
КонецЕсли;

Если ПустЗнач(Счет.ВидСубконто(1)) = 1 Тогда
Сообщить("По рахунку "+Счет.Код+" не ведеться аналітичний облік","!!!");
Возврат;
КонецЕсли;

Если Сотрудник.Выбран() = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(2),Сотрудник);
Иначе
Ит.ИспользоватьСубконто(Счет.ВидСубконто(2),);
КонецЕсли;
Если ТМЦ.Выбран() = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),ТМЦ);
Иначе
Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),);
КонецЕсли;
Если ПоПартиям = 1 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(3),);
КонецЕсли;
Ит.ВключатьСубсчета(1,1);
Ит.ВыполнитьЗапрос(ДатаОтчета,ДатаОтчета,Счет,,,1,,5);
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
Сотр = Ит.Субконто(1);
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Таб.ВывестиСекцию("Сотрудник");
Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2) = 1 Цикл
Продукт = Ит.Субконто(2);
Если Продукт.ЭтоГруппа() = 1 Тогда
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Таб.ВывестиСекцию("Группа");
Иначе
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Арт = Продукт.ПолныйКод();
//******************************
// Продукт - это скорее всего собственно ТМЦ. Следовательно единица измерения "Продукт.(реквизит единицы измерения)"
Ед = Продукт.РеквизитВСправочникеТМЦОтвечающийЗаЕдиницуИзмерения
Если Средняя = 1 Тогда
Цена = ?(Кол <> 0,Сальдо/Кол,0);
Иначе
Цена = Продукт.ТекущийЭлемент().Цена;
КонецЕсли;
Таб.ВывестиСекцию("Товар"); // в эту строку в таблице добавить столбик с выражение "Ед"
Если ПоПартиям = 1 Тогда
Ит.ВыбратьСубконто(3);
Пока Ит.ПолучитьСубконто(3) = 1 Цикл
Кол = Ит.СКД(3);
Сальдо = Ит.СКД(1);
Партия = Ит.Субконто(3);
Если Кол = 0 Тогда
Цена = 0;
Иначе
Цена = Сальдо/Кол;
КонецЕсли;
Таб.ВывестиСекцию("Партия");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Таб.ПараметрыСтраницы(1,,,,,,,,,);
Таб.ВывестиСекцию("Подвал");
Таб.Опции(0,0,7,0);
Таб.Защита(1);
Таб.ТолькоПросмотр(1);
Таб.Показать("Залишки ТМЦ","");
КонецПроцедуры
Неизвестный
04.02.2009, 18:40
общий
это ответ
Здравствуйте, Slava Hl! Судя по фараз типа: "Потрібно вибрати рахунок" у Вас украинская бухгалтерия но надеюсь что в этом она совпадает с русской. У ас есть строка: Продукт = Ит.Субконто(2); здесь вы имеете ссылку на элемент справочника ТМЦ, хотя на печать у вас выводится наименование товара(это называется представление элемента по умолчанию). ПОсмотрите как в этом справочнике называется единица измерения . В русском варианте она называется "ЕдиницаИзмерения". Соответственно строка которую надо добавить в модульвыглядит :
Продукт = Ит.Субконто(2);//это было
ЕдиницаИзмерения = Продукт.ЕдиницаИзмерения.Наименование;//это надо добавить
Удачи!!!
Форма ответа