В общем сдаюсь и слезно прошу помощи для совсем еще начинающего "программиста", так же прошу не кидаться тапочками, а то больно. Проблема вот в чем. Я выгрузила типовой отчет с целью изменить немного макет и сделать его внешним отчетом. Сделать внешним отчетом получилось, макет поменяла, а вот строчки в табличной части макета все никак не заполняются. Сам отчет формируется из регистра "Плановое меню", там есть все. в общем я еще совсем не опытна и все, что я могла написать это :
Выбор = Документы.УППБУ_ПлановоеМеню;
Выборка=Выбор.Выбрать();
Пока Выборка.Следующий() Цикл
ОблСтрокаТЧНомерСтроки.Параметры.Категория = Строка(Выборка.КатегорияДовольствующихся);
//ОблСтрокаТЧНомерСтроки.Параметры.Категория = Инд + 1;
ДокументРезультат.Вывести(ОблСтрокаТЧНомерСтроки);
КонецЦикла;
Показать
этот "шедевр" выводит вот так(скрин1), и я совершенно точно понимаю, что я делаю не правильно. И поэтому пришла просить помощи. Как правильно можно реализовать, чтобы выглядело так(скрин 2 эксель). На всякий случай прикреплю еще текст всей функции, авось кто-то и поможет, в "ТаблицаРезультат" категория уже не попадает, может нужно в схеме компоновке покопаться, я не понимаю
Процедура СформироватьОтчет(ДокументРезультат = Неопределено, ДанныеРасшифровки = Неопределено, Схема = Неопределено, ОтветственныеТЗ, ТабДок) Экспорт
// Сформируем структуру параметров для получения таблицы списываемых продуктов.
мСтруктураПараметров = СформироватьСтруктуруДляПолученияТаблицыДанных();
ТаблицаПоВидамПриема = УППБУ_КалькуляцияПродуктовПитания.ПолучитьПлановыйРасходПродуктовПоБлюдам(мСтруктураПараметров);
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Если Не мСтруктураПараметров.ФормироватьПоСтолам Тогда
Для каждого ВыбранноеПоле Из Настройки.Выбор.Элементы Цикл
Если ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Стол") Тогда
ВыбранноеПоле.Использование = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, Новый Структура("ТаблицаПоВидамПриема", ТаблицаПоВидамПриема), Неопределено, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
ПодготовитьТаблицуДляВывода(ТаблицаРезультат);
ДокументРезультат.Очистить();
Если РасчетСтоимости = 0 Тогда
ПолучитьОбщееКоличествоПорцийПоСпецификации(ТаблицаРезультат);
КонецЕсли;
Макет = ПолучитьМакет("Макет");
// Добавляем заголовок о формировании отчета по плановым или фактическим данным.
Если Настройки.ДополнительныеСвойства.ВыводитьЗаголовок Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.ТекстЗаголовка = "По " + ?(ВидОтчета = 0, "плановым", "фактическим") + " показаниям";
ДокументРезультат.Вывести(ОбластьЗаголовок);
КонецЕсли;
// Выводим шапку отчета.
ОблШапка = Макет.ПолучитьОбласть("Шапка");
ОблШапка.Параметры.НаименованиеУчреждения = Организация.Наименование;
ОблШапка.Параметры.Учреждение = Организация;
ОблШапка.Параметры.ПредставлениеПериода = Формат(НачалоПериода, "ДЛФ=ДД");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ОблШапка.Параметры.пКВД = ПредставленияПоОтбору(Настройки.Отбор.Элементы, "КФО", "Перечисление.КВД", "Без учета кода вида финансового обеспечения");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДокументРезультат.Вывести(ОблШапка);
/////////////////////////////////////////////////////////////////
// ВЫВОД ТАБЛИЦЫ МЕНЮ
// Выводим шапку таблицы МЕНЮ.
ОблШапкаНомерСтроки = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецНомерСтроки");
ОблШапкаБелки = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецБелки");
ОблШапкаЖиры = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецЖиры");
ОблШапкаУглеводы = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецУглеводы");
ОблШапкаКалорийность = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецКалорийность");
ОблШапкаНомерКарточкиНаименование = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецНомерКарточкиНаименование");
ОблШапкаОписание = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецОписание");
ОблШапкаКоличество = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецКоличество");
ОблШапкаВес = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецВес");
ОблШапкаСтоимость = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецСтоимость");
ОблШапкаСумма = Макет.ПолучитьОбласть("ШапкаТЧ|СтолбецСумма");
ИмяСтрокиОбласти = ?(ВыводитьДанныеОСпецификации, "СтрокаТЧ", "СтрокаТЧБезСпецификации");
ВыводитьИтоги = ВыводитьБелки Или ВыводитьЖиры Или ВыводитьКалорийность Или ВыводитьУглеводы Или ВыводитьКоличествоСумму;
ДокументРезультат.Вывести(ОблШапкаНомерСтроки);
Если ВыводитьБелки Тогда
ДокументРезультат.Присоединить(ОблШапкаБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ДокументРезультат.Присоединить(ОблШапкаЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ДокументРезультат.Присоединить(ОблШапкаУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ДокументРезультат.Присоединить(ОблШапкаКалорийность);
КонецЕсли;
ДокументРезультат.Присоединить(ОблШапкаНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ДокументРезультат.Присоединить(ОблШапкаОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблШапкаКоличество);
КонецЕсли;
ДокументРезультат.Присоединить(ОблШапкаВес);
ДокументРезультат.Присоединить(ОблШапкаСтоимость);
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблШапкаСумма);
КонецЕсли;
// Выводим шапку таблицы на каждой странице.
ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область("R11");
// Выводим строки таблицы МЕНЮ.
ТаблицаПриемаПищи = УППБУ_КалькуляцияПродуктовПитания.ПолучитьТаблицуПриемовПищи();
СписокПриемаПищи = ТаблицаПриемаПищи.Скопировать(, "ВидПриемаПорядок, ВидПриемаПищи");
СписокПриемаПищи.Свернуть("ВидПриемаПорядок, ВидПриемаПищи",);
СуммаИтого = 0;
Для Каждого ТекЭлементПорядка Из СписокПриемаПищи Цикл
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("ВидПриемаПищи", ТекЭлементПорядка.ВидПриемаПищи);
СтрокиПоВидуПриема = ТаблицаРезультат.НайтиСтроки(СтруктураПоиска);
// Если по текущему виду приема ничего не найдено, перейдем к поиску по следующему.
Если СтрокиПоВидуПриема.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ОблВидПриемаНомерСтроки = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецНомерСтроки");
ОблВидПриемаБелки = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецБелки");
ОблВидПриемаЖиры = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецЖиры");
ОблВидПриемаУглеводы = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецУглеводы");
ОблВидПриемаКалорийность = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецКалорийность");
ОблВидПриемаНомерКарточкиНаименование = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецНомерКарточкиНаименование");
ОблВидПриемаОписание = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецОписание");
ОблВидПриемаКоличество = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецКоличество");
ОблВидПриемаВес = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецВес");
ОблВидПриемаСтоимость = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецСтоимость");
ОблВидПриемаСумма = Макет.ПолучитьОбласть("СтрокаВидПриема|СтолбецСумма");
// Текущий вид приема из таблицы результата.
ТекВидаПриема = СтрокиПоВидуПриема[0].ВидПриемаПищи;
ОблВидПриемаНомерСтроки.Параметры.ВидПриемаПищи = ТекВидаПриема;
ДокументРезультат.Вывести(ОблВидПриемаНомерСтроки);
Если ВыводитьБелки Тогда
ДокументРезультат.Присоединить(ОблВидПриемаБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ДокументРезультат.Присоединить(ОблВидПриемаЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ДокументРезультат.Присоединить(ОблВидПриемаУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ДокументРезультат.Присоединить(ОблВидПриемаКалорийность);
КонецЕсли;
ДокументРезультат.Присоединить(ОблВидПриемаНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ДокументРезультат.Присоединить(ОблВидПриемаОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблВидПриемаКоличество);
КонецЕсли;
ДокументРезультат.Присоединить(ОблВидПриемаВес);
ДокументРезультат.Присоединить(ОблВидПриемаСтоимость);
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблВидПриемаСумма);
КонецЕсли;
СуммаИтогоНаВидПриема = 0;
Если Не ВыводитьВПорядкеВидовБлюд Тогда
Для Инд = 0 По (СтрокиПоВидуПриема.Количество() - 1) Цикл
ТекущиеДанные = СтрокиПоВидуПриема[Инд];
ОблСтрокаТЧНомерСтроки = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецНомерСтроки");
ОблСтрокаТЧВес = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецВес");
ОблСтрокаТЧБелки = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецБелки");
ОблСтрокаТЧЖиры = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецЖиры");
ОблСтрокаТЧУглеводы = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецУглеводы");
ОблСтрокаТЧКалорийность = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецКалорийность");
ОблСтрокаТЧНомерКарточкиНаименование = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецНомерКарточкиНаименование");
ОблСтрокаТЧОписание = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецОписание");
ОблСтрокаТЧКоличество = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецКоличество");
ОблСтрокаТЧВес = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецВес");
ОблСтрокаТЧСтоимость = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецСтоимость");
ОблСтрокаТЧСумма = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецСумма");
Если СокрЛП(ТекущиеДанные.Блюдо.ЕдиницаИзмерения.Код) = "163" Тогда
ОблСтрокаТЧВес.Параметры.ВесПорции = ТекущиеДанные.ВесПорции / 1000;
ИначеЕсли СокрЛП(ТекущиеДанные.Блюдо.ЕдиницаИзмерения.Код) <> "166" Тогда
ОблСтрокаТЧВес.Параметры.ВесПорции = Строка(ТекущиеДанные.ВесПорции) +" ("+ТекущиеДанные.Блюдо.ЕдиницаИзмерения+")";
КонецЕсли;
// Запрос = Новый Запрос;
// Запрос.Текст = "ВЫБРАТЬ
// | КатегорииДовольствующихся.Наименование КАК Категория
// |ИЗ
// | Справочник.КатегорииДовольствующихся КАК КатегорииДовольствующихся";
//
// Результат = Запрос.Выполнить();
// Если Результат.Пустой() тогда
// ТабДок.Вывести(ОблСтрокаТЧВес);
// Возврат ТабДок;
//КонецЕсли;
// Выбор = Результат.Выбрать();
Выбор = Документы.УППБУ_ПлановоеМеню;
Выборка=Выбор.Выбрать();
Пока Выборка.Следующий() Цикл
ОблСтрокаТЧНомерСтроки.Параметры.Категория = Строка(Выборка.КатегорияДовольствующихся);
//ОблСтрокаТЧНомерСтроки.Параметры.Категория = Инд + 1;
ДокументРезультат.Вывести(ОблСтрокаТЧНомерСтроки);
КонецЦикла;
Если ВыводитьБелки Тогда
ОблСтрокаТЧБелки.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ОблСтрокаТЧЖиры.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ОблСтрокаТЧУглеводы.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ОблСтрокаТЧКалорийность.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧКалорийность);
КонецЕсли;
ОблСтрокаТЧНомерКарточкиНаименование.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ТекОписание = СтрЗаменить(ТекущиеДанные.Спецификация.Описание, Символы.ПС, " ");
ОблСтрокаТЧОписание.Параметры.Описание = ТекОписание;
ДокументРезультат.Присоединить(ОблСтрокаТЧОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ОблСтрокаТЧКоличество.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧКоличество);
КонецЕсли;
ОблСтрокаТЧВес.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧВес);
ОблСтрокаТЧСтоимость.Параметры.Заполнить(ТекущиеДанные);
СтоимостьБлюда = 0;
Если РасчетСтоимости = 0 Тогда
СуммаЗатрат = ПолучитьСуммуЗатратНаБлюдо(ТекущиеДанные.Блюдо, ТекущиеДанные.Спецификация, ТекВидаПриема);
текКоличествоПорций = ТекущиеДанные.КоличествоПорций;
СтоимостьБлюда = СтоимостьБлюда + (СуммаЗатрат / ТекущиеДанные.ОбщееКоличествоПорций) + (ПроцентНаценки / 100) * (СуммаЗатрат / ТекущиеДанные.ОбщееКоличествоПорций);
Иначе
СтруктураПараметровДляПолученияЦены = Новый Структура;
СтруктураПараметровДляПолученияЦены.Вставить("Организация", Организация);
СтруктураПараметровДляПолученияЦены.Вставить("Номенклатура", ТекущиеДанные.Блюдо);
СтруктураПараметровДляПолученияЦены.Вставить("ТипЦены", ТипЦен);
СтруктураПараметровДляПолученияЦены.Вставить("ТипВеса", Константы.УППБУ_ТипВесаДляРасчетаКоличестваПродуктов.Получить());
СтруктураПараметровДляПолученияЦены.Вставить("ДатаЦены", НачалоПериода);
СтоимостьБлюда = УППБУ_КалькуляцияПродуктовПитания.ПолучитьЦенуБлюда(СтруктураПараметровДляПолученияЦены);
КонецЕсли;
ОблСтрокаТЧСтоимость.Параметры.СтоимостьБлюда = СтоимостьБлюда;
ДокументРезультат.Присоединить(ОблСтрокаТЧСтоимость);
Если ВыводитьКоличествоСумму Тогда
ТекСумма = ТекущиеДанные.КоличествоПорций * СтоимостьБлюда;
ОблСтрокаТЧСумма.Параметры.Сумма = ТекСумма;
СуммаИтогоНаВидПриема = СуммаИтогоНаВидПриема + ТекСумма;
СуммаИтого = СуммаИтого + ТекСумма;
ДокументРезультат.Присоединить(ОблСтрокаТЧСумма);
КонецЕсли;
КонецЦикла;
Иначе
ДокументРезультат.НачатьАвтогруппировкуСтрок();
текВидБлюда = Неопределено;
Для Инд = 0 По (СтрокиПоВидуПриема.Количество() - 1) Цикл
ТекущиеДанные = СтрокиПоВидуПриема[Инд];
// Если это новый вид блюда, выводиться наименование вида блюда.
Если ТекущиеДанные.ВидБлюда <> текВидБлюда Тогда
ОблСтрокаВидБлюдаНомерСтроки = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецНомерСтроки");
ОблСтрокаВидБлюдаБелки = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецБелки");
ОблСтрокаВидБлюдаЖиры = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецЖиры");
ОблСтрокаВидБлюдаУглеводы = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецУглеводы");
ОблСтрокаВидБлюдаКалорийность = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецКалорийность");
ОблСтрокаВидБлюдаНомерКарточкиНаименование = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецНомерКарточкиНаименование");
ОблСтрокаВидБлюдаОписание = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецОписание");
ОблСтрокаВидБлюдаКоличество = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецКоличество");
ОблСтрокаВидБлюдаВес = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецВес");
ОблСтрокаВидБлюдаСтоимость = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецСтоимость");
ОблСтрокаВидБлюдаСумма = Макет.ПолучитьОбласть("СтрокаВидБлюда|СтолбецСумма");
ОблСтрокаВидБлюдаНомерСтроки.Параметры.ВидБлюда = ?(ЗначениеЗаполнено(ТекущиеДанные.ВидБлюда), ТекущиеДанные.ВидБлюда, "<без учета вида блюда>");
ДокументРезультат.Вывести(ОблСтрокаВидБлюдаНомерСтроки, 2);
Если ВыводитьБелки Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаКалорийность);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаКоличество);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаВес);
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаСтоимость);
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблСтрокаВидБлюдаСумма);
КонецЕсли;
текВидБлюда = ТекущиеДанные.ВидБлюда;
КонецЕсли;
ОблСтрокаТЧНомерСтроки = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецНомерСтроки");
ОблСтрокаТЧВес = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецВес");
ОблСтрокаТЧБелки = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецБелки");
ОблСтрокаТЧЖиры = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецЖиры");
ОблСтрокаТЧУглеводы = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецУглеводы");
ОблСтрокаТЧКалорийность = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецКалорийность");
ОблСтрокаТЧНомерКарточкиНаименование = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецНомерКарточкиНаименование");
ОблСтрокаТЧОписание = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецОписание");
ОблСтрокаТЧКоличество = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецКоличество");
ОблСтрокаТЧВес = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецВес");
ОблСтрокаТЧСтоимость = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецСтоимость");
ОблСтрокаТЧСумма = Макет.ПолучитьОбласть(ИмяСтрокиОбласти + "|СтолбецСумма");
Если СокрЛП(ТекущиеДанные.Блюдо.ЕдиницаИзмерения.Код) = "163" Тогда
ОблСтрокаТЧВес.Параметры.ВесПорции = ТекущиеДанные.ВесПорции / 1000;
ИначеЕсли СокрЛП(ТекущиеДанные.Блюдо.ЕдиницаИзмерения.Код) <> "166" Тогда
ОблСтрокаТЧВес.Параметры.ВесПорции = "" + ТекущиеДанные.ВесПорции +" ("+ТекущиеДанные.Блюдо.ЕдиницаИзмерения+")";
КонецЕсли;
//
//Выбор = Категория.Наименование;
//Для каждого Строка из Выбор цикл
//ОблСтрокаТЧНомерСтроки.Параметры.Категория = Строка(Выбор);
////ОблСтрокаТЧНомерСтроки.Параметры.Категория = Инд + 1;
//ДокументРезультат.Вывести(ОблСтрокаТЧНомерСтроки);
//КонецЦикла;
Если ВыводитьБелки Тогда
ОблСтрокаТЧБелки.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ОблСтрокаТЧЖиры.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ОблСтрокаТЧУглеводы.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ОблСтрокаТЧКалорийность.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧКалорийность);
КонецЕсли;
ОблСтрокаТЧНомерКарточкиНаименование.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ТекОписание = СтрЗаменить(ТекущиеДанные.Спецификация.Описание, Символы.ПС, " ");
ОблСтрокаТЧОписание.Параметры.Описание = ТекОписание;
ДокументРезультат.Присоединить(ОблСтрокаТЧОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ОблСтрокаТЧКоличество.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧКоличество);
КонецЕсли;
ОблСтрокаТЧВес.Параметры.Заполнить(ТекущиеДанные);
ДокументРезультат.Присоединить(ОблСтрокаТЧВес);
ОблСтрокаТЧСтоимость.Параметры.Заполнить(ТекущиеДанные);
СтоимостьБлюда = 0;
Если РасчетСтоимости = 0 Тогда
СуммаЗатрат = ПолучитьСуммуЗатратНаБлюдо(ТекущиеДанные.Блюдо, ТекущиеДанные.Спецификация, ТекВидаПриема);
текКоличествоПорций = ТекущиеДанные.КоличествоПорций;
СтоимостьБлюда = СтоимостьБлюда + (СуммаЗатрат / ТекущиеДанные.ОбщееКоличествоПорций) + (ПроцентНаценки / 100) * (СуммаЗатрат / ТекущиеДанные.ОбщееКоличествоПорций);
Иначе
СтруктураПараметровДляПолученияЦены = Новый Структура;
СтруктураПараметровДляПолученияЦены.Вставить("Организация", Организация);
СтруктураПараметровДляПолученияЦены.Вставить("Номенклатура", ТекущиеДанные.Блюдо);
СтруктураПараметровДляПолученияЦены.Вставить("ТипЦены", ТипЦен);
СтруктураПараметровДляПолученияЦены.Вставить("ТипВеса", Константы.УППБУ_ТипВесаДляРасчетаКоличестваПродуктов.Получить());
СтруктураПараметровДляПолученияЦены.Вставить("ДатаЦены", НачалоПериода);
СтоимостьБлюда = УППБУ_КалькуляцияПродуктовПитания.ПолучитьЦенуБлюда(СтруктураПараметровДляПолученияЦены);
КонецЕсли;
ОблСтрокаТЧСтоимость.Параметры.СтоимостьБлюда = СтоимостьБлюда;
ДокументРезультат.Присоединить(ОблСтрокаТЧСтоимость);
Если ВыводитьКоличествоСумму Тогда
ТекСумма = ТекущиеДанные.КоличествоПорций * СтоимостьБлюда;
ОблСтрокаТЧСумма.Параметры.Сумма = ТекСумма;
СуммаИтогоНаВидПриема = СуммаИтогоНаВидПриема + ТекСумма;
СуммаИтого = СуммаИтого + ТекСумма;
ДокументРезультат.Присоединить(ОблСтрокаТЧСумма);
КонецЕсли;
КонецЦикла;
ДокументРезультат.ЗакончитьАвтогруппировкуСтрок();
КонецЕсли;
Если ВыводитьИтоги Тогда
// Подготовка итогов по виду приема.
ИтогиПоВидуПриема = ТаблицаРезультат.Скопировать();
ИтогиПоВидуПриема.Свернуть("ВидПриемаПищи",
"Белки,
|Жиры,
|Углеводы,
|Калорийность,
|Сумма");
СтрокаИтоговПоВидуПриема = ИтогиПоВидуПриема.Найти(ТекВидаПриема, "ВидПриемаПищи");
Если СтрокаИтоговПоВидуПриема = Неопределено Тогда // Если итогов нет, пропускаем.
Продолжить;
КонецЕсли;
ОблСтрокаИтогоВидПриемаНомерСтроки = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецНомерСтроки");
ОблСтрокаИтогоВидПриемаВес = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецВес");
ОблСтрокаИтогоВидПриемаБелки = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецБелки");
ОблСтрокаИтогоВидПриемаЖиры = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецЖиры");
ОблСтрокаИтогоВидПриемаУглеводы = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецУглеводы");
ОблСтрокаИтогоВидПриемаКалорийность = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецКалорийность");
ОблСтрокаИтогоВидПриемаНомерКарточкиНаименование = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецНомерКарточкиНаименование");
ОблСтрокаИтогоВидПриемаОписание = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецОписание");
ОблСтрокаИтогоВидПриемаКоличество = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецКоличество");
ОблСтрокаИтогоВидПриемаВес = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецВес");
ОблСтрокаИтогоВидПриемаСтоимость = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецСтоимость");
ОблСтрокаИтогоВидПриемаСумма = Макет.ПолучитьОбласть("СтрокаИтогоВидПриема|СтолбецСумма");
ОблСтрокаИтогоВидПриемаНомерСтроки.Параметры.ВидПриема = ТекВидаПриема;
ДокументРезультат.Вывести(ОблСтрокаИтогоВидПриемаНомерСтроки);
Если ВыводитьБелки Тогда
ОблСтрокаИтогоВидПриемаБелки.Параметры.Заполнить(СтрокаИтоговПоВидуПриема);
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ОблСтрокаИтогоВидПриемаЖиры.Параметры.Заполнить(СтрокаИтоговПоВидуПриема);
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ОблСтрокаИтогоВидПриемаУглеводы.Параметры.Заполнить(СтрокаИтоговПоВидуПриема);
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ОблСтрокаИтогоВидПриемаКалорийность.Параметры.Заполнить(СтрокаИтоговПоВидуПриема);
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаКалорийность);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаКоличество);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаВес);
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаСтоимость);
Если ВыводитьКоличествоСумму Тогда
ОблСтрокаИтогоВидПриемаСумма.Параметры.Сумма = СуммаИтогоНаВидПриема;
ДокументРезультат.Присоединить(ОблСтрокаИтогоВидПриемаСумма);
КонецЕсли;
ИтогиПоВидуПриема.Очистить();
КонецЕсли;
КонецЦикла;
Если ВыводитьИтоги Тогда
// Подготовка общих итогов.
ИтогиОбщие = ТаблицаРезультат.Скопировать();
ИтогиОбщие.Колонки.Добавить("ДляСвертки");
ИтогиОбщие.Свернуть("ДляСвертки",
"Белки,
|Жиры,
|Углеводы,
|Калорийность,
|Сумма");
Если ИтогиОбщие.Количество() <> 0 Тогда // Проверка на наличие итогов.
СтрокаОбщихИтогов = ИтогиОбщие[0];
// Выводим итоги таблицы МЕНЮ.
ОблСтрокаИтогоНомерСтроки = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецНомерСтроки");
ОблСтрокаИтогоВес = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецВес");
ОблСтрокаИтогоБелки = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецБелки");
ОблСтрокаИтогоЖиры = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецЖиры");
ОблСтрокаИтогоУглеводы = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецУглеводы");
ОблСтрокаИтогоКалорийность = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецКалорийность");
ОблСтрокаИтогоНомерКарточкиНаименование = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецНомерКарточкиНаименование");
ОблСтрокаИтогоОписание = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецОписание");
ОблСтрокаИтогоКоличество = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецКоличество");
ОблСтрокаИтогоВес = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецВес");
ОблСтрокаИтогоСтоимость = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецСтоимость");
ОблСтрокаИтогоСумма = Макет.ПолучитьОбласть("СтрокаИтого|СтолбецСумма");
ДокументРезультат.Вывести(ОблСтрокаИтогоНомерСтроки);
ОблСтрокаИтогоБелки.Параметры.Заполнить(СтрокаОбщихИтогов);
ОблСтрокаИтогоЖиры.Параметры.Заполнить(СтрокаОбщихИтогов);
ОблСтрокаИтогоУглеводы.Параметры.Заполнить(СтрокаОбщихИтогов);
ОблСтрокаИтогоКалорийность.Параметры.Заполнить(СтрокаОбщихИтогов);
Если ВыводитьБелки Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоБелки);
КонецЕсли;
Если ВыводитьЖиры Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоЖиры);
КонецЕсли;
Если ВыводитьУглеводы Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоУглеводы);
КонецЕсли;
Если ВыводитьКалорийность Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоКалорийность);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаИтогоНомерКарточкиНаименование);
Если ВыводитьОписание Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоОписание);
КонецЕсли;
Если ВыводитьКоличествоСумму Тогда
ДокументРезультат.Присоединить(ОблСтрокаИтогоКоличество);
КонецЕсли;
ДокументРезультат.Присоединить(ОблСтрокаИтогоВес);
ДокументРезультат.Присоединить(ОблСтрокаИтогоСтоимость);
Если ВыводитьКоличествоСумму Тогда
ОблСтрокаИтогоСумма.Параметры.Сумма = СуммаИтого;
ДокументРезультат.Присоединить(ОблСтрокаИтогоСумма);
КонецЕсли;
КонецЕсли;
ИтогиОбщие.Очистить();
КонецЕсли;
/////////////////////////////////////////////////////////////////
// ВЫВОД ТАБЛИЦЫ №2
Если ВыводитьВитаминыИМинВещества Тогда
ТабДок = Новый ТабличныйДокумент;
// Выводим шапку отчета.
ОблШапка = ОблШапка.ПолучитьОбласть("R1C1:R7C60");
ТабДок.Вывести(ОблШапка);
// выводим вторую шапку
ОблШапкаДоп = Макет.ПолучитьОбласть("ШапкаДоп");
ОблШапкаДоп.Параметры.ПредставлениеПериода = Формат(НачалоПериода, "ДЛФ=ДД");
ТабДок.Вывести(ОблШапкаДоп);
ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("ШапкаДоп");
// выводим шапку таблицы 2
ОблШапкаТЧДоп = Макет.ПолучитьОбласть("ШапкаТЧДоп");
ТабДок.Вывести(ОблШапкаТЧДоп);
// выводим строки таблицы 2
Для Каждого ТекЭлементПорядка Из СписокПриемаПищи Цикл
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("ВидПриемаПищи", ТекЭлементПорядка.ВидПриемаПищи);
СтрокиПоВидуПриема = ТаблицаРезультат.НайтиСтроки(СтруктураПоиска);
// Если по текущему виду приема ничего не найдено, перейдем к поиску по следующему.
Если СтрокиПоВидуПриема.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
// текущий вид приема из таблицы результата
ТекВидаПриема = СтрокиПоВидуПриема[0].ВидПриемаПищи;
ОблСтрокаВидПриемаДоп = Макет.ПолучитьОбласть("СтрокаВидПриемаДоп");
ОблСтрокаВидПриемаДоп.Параметры.ВидПриемаПищи = ТекВидаПриема;
ТабДок.Вывести(ОблСтрокаВидПриемаДоп);
Для Инд = 0 По (СтрокиПоВидуПриема.Количество() - 1) Цикл
ТекущиеДанные = СтрокиПоВидуПриема[Инд];
ОблСтрокаТЧДоп = Макет.ПолучитьОбласть("СтрокаТЧДоп");
ОблСтрокаТЧДоп.Параметры.Заполнить(ТекущиеДанные);
ТабДок.Вывести(ОблСтрокаТЧДоп);
КонецЦикла;
// Подготовка итогов по виду приема для витаминов и минералов.
ИтогиПоВидуПриема = ТаблицаРезультат.Скопировать();
ИтогиПоВидуПриема.Свернуть("ВидПриемаПищи",
"ВитаминА,
|ВитаминB1,
|ВитаминB2,
|ВитаминB6,
|ВитаминB12,
|ВитаминPP,
|ВитаминC,
|ВитаминD,
|ВитаминE,
|Na,K,Ca,Mg,P,Fe,Zn,J");
СтрокаИтоговПоВидуПриема = ИтогиПоВидуПриема.Найти(ТекВидаПриема, "ВидПриемаПищи");
Если СтрокаИтоговПоВидуПриема = Неопределено Тогда // если итогов нет, пропускаем
Продолжить;
КонецЕсли;
ОблСтрокаИтогоВидПриемаДоп = Макет.ПолучитьОбласть("СтрокаИтогоВидПриемаДоп");
ОблСтрокаИтогоВидПриемаДоп.Параметры.Заполнить(СтрокаИтоговПоВидуПриема);
ОблСтрокаИтогоВидПриемаДоп.Параметры.ВидПриемаПищи = ТекВидаПриема;
ТабДок.Вывести(ОблСтрокаИтогоВидПриемаДоп);
ИтогиПоВидуПриема.Очистить();
КонецЦикла;
// Вывод общих итогов таблицы по витаминам и минералам.
ИтогиОбщие = ТаблицаРезультат.Скопировать();
ИтогиОбщие.Колонки.Добавить("ДляСвертки");
ИтогиОбщие.Свернуть("ДляСвертки",
"ВитаминА,
|ВитаминB1,
|ВитаминB2,
|ВитаминB6,
|ВитаминB12,
|ВитаминPP,
|ВитаминC,
|ВитаминD,
|ВитаминE,
|Na,K,Ca,Mg,P,Fe,Zn,J");
Если ИтогиОбщие.Количество() <> 0 Тогда // проверка на наличие итогов
СтрокаОбщихИтогов = ИтогиОбщие[0];
ОблСтрокаИтогоДоп = Макет.ПолучитьОбласть("СтрокаИтогоДоп");
ОблСтрокаИтогоДоп.Параметры.Заполнить(СтрокаОбщихИтогов);
ТабДок.Вывести(ОблСтрокаИтогоДоп);
КонецЕсли;
ИтогиОбщие.Очистить();
ОбластьТекста = ТабДок.Область("R1C1");
Пока Не ОбластьТекста = Неопределено Цикл
ОбластьТекста = ТабДок.НайтиТекст("ВспомогательныйТекстДляОбъединения", ОбластьТекста, , Истина);
Если Не ОбластьТекста = Неопределено Тогда
ОбластьТекста.Текст = "";
ИмяОбласти = ОбластьТекста.Имя;
НомерСимволаС = Найти(ИмяОбласти, "C");
ПозицияСтолбец = Лев(ИмяОбласти, НомерСимволаС - 1);
ОбластьОбъединения = ТабДок.Область(ПозицияСтолбец + "C2" + ":" + ИмяОбласти);
ОбластьОбъединения.Объединить();
ОбластьОбъединения.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЕсли;
КонецЦикла;
// выводим подвал "Содержание Витаминов и Минеральных Веществ".
ОблОтветственные = Макет.ПолучитьОбласть("Ответственные");
Для Каждого ТекСтрока Из ОтветственныеТЗ Цикл
Если Не ПустаяСтрока(ТекСтрока.Ответственный) Тогда
ОтветственныйФИО = КорреспондентыКлиентСервер.ФИО(ТекСтрока.Ответственный.Наименование, Ложь);
ОблОтветственные.Параметры.Должность = ТекСтрока.Должность;
ОблОтветственные.Параметры.Ответственный = ОтветственныйФИО;;
ТабДок.Вывести(ОблОтветственные);
КонецЕсли;
КонецЦикла;
ТабДок.ИмяПараметровПечати = "УППБУ_МенюБлюд";
ТабДок.АвтоМасштаб = Истина;
КонецЕсли;
ОбластьТекста = ДокументРезультат.Область("R1C1");
Пока Не ОбластьТекста = Неопределено Цикл
ОбластьТекста = ДокументРезультат.НайтиТекст("ВспомогательныйТекстДляОбъединения", ОбластьТекста, , Истина);
Если Не ОбластьТекста = Неопределено Тогда
ОбластьТекста.Текст = "";
ИмяОбласти = ОбластьТекста.Имя;
НомерСимволаС = Найти(ИмяОбласти, "C");
ПозицияСтолбец = Лев(ИмяОбласти, НомерСимволаС - 1);
ОбластьОбъединения = ДокументРезультат.Область(ПозицияСтолбец + "C2" + ":" + ИмяОбласти);
ОбластьОбъединения.Объединить();
ОбластьОбъединения.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЕсли;
КонецЦикла;
// выводим подвал "Меню Блюд".
ОблОтветственные = Макет.ПолучитьОбласть("Ответственные");
Для Каждого ТекСтрока Из ОтветственныеТЗ Цикл
Если Не ПустаяСтрока(ТекСтрока.Ответственный) Тогда
ОтветственныйФИО = КорреспондентыКлиентСервер.ФИО(ТекСтрока.Ответственный.Наименование, Ложь);
ОблОтветственные.Параметры.Должность = ТекСтрока.Должность;
ОблОтветственные.Параметры.Ответственный = ОтветственныйФИО;
ДокументРезультат.Вывести(ОблОтветственные);
КонецЕсли;
КонецЦикла;
ДокументРезультат.ИмяПараметровПечати = "УППБУ_МенюБлюд";
ДокументРезультат.ЧерноБелаяПечать = Ложь;
ДокументРезультат.АвтоМасштаб = Истина;
КонецПроцедуры
Процедура ПодготовитьТаблицуДляВывода(ТаблицаРезультат)
// Сортировка таблицы в соответствии с настройками.
Если ПорядокВыводаДанных > 0 Тогда // Если указаны поля сортировки
СтрокаСортировки = "";
// Если вывод по видам блюд, то добавляется первоначальная сортировка по порядку вывода видов блюд.
Если ВыводитьВПорядкеВидовБлюд Тогда
СтрокаСортировки = "ПорядокВывода";
КонецЕсли;
Для Каждого ЭлементПорядка Из ПорядокВыводаДанных Цикл
Если ЭлементПорядка.ПутьКДанным = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаСортировки = СтрокаСортировки + ?(ЗначениеЗаполнено(СтрокаСортировки), ",","") + ЭлементПорядка.ПутьКДанным
+ ?(ЭлементПорядка.Направление = НаправлениеСортировки.Убыв, " Убыв", "");
КонецЦикла;
Если ЗначениеЗаполнено(СтрокаСортировки) Тогда
ТаблицаРезультат.Сортировать(СтрокаСортировки);
КонецЕсли;
КонецЕсли;
// Свертка таблицы.
ТаблицаРезультат.Свернуть("ВидПриемаПищи,
|ВидПриемаПорядок,
|ВидБлюда,
|Блюдо,
|НаименованиеБлюда,
|НомерКарточки,
|Спецификация,
|Белки,
|Жиры,
|Углеводы,
|Калорийность,
|ВитаминА,
|ВитаминB1,
|ВитаминB2,
|ВитаминB6,
|ВитаминB12,
|ВитаминPP,
|ВитаминC,
|ВитаминD,
|ВитаминE,
|Na,K,Ca,Mg,P,Fe,Zn,J,
|ВесПорции", "КоличествоПорций, Сумма");
КонецПроцедуры
НаборПоказателей = Новый Массив
(18) Хорошо, Таня. Слава Богу! Не унывай, продолжай, всё получится! Постепенно, не всё сразу.
Можно было бы поскорее помочь, но есть и своя работа. Возможно, нужно было сразу запросить у тебя текст этой функции, но бывает не сразу всё понятно по кусочкам кода и скриншотам. Всего тебе доброго! :) (sm можешь оставить себе ;) )
(19)Спасибо за хорошие слова, я стараюсь и постепенно узнаю все больше, на теорию особо времени нет, сразу практика, да и так намного легче разбираться, сразу по ходу) Но честно говоря, когда в тупике, не хватает знаний и опыта, руки немного опускаются)