Имя: Пароль:
1C
1C 7.7
v7: Как выводить информацию на печать в расходной накладной.
,
0 YoungW
 
26.04.12
17:18
Добрый день всем.
Вот имеется некоторая задача:

Необходимо добавить в печатную форму документа «Выдача талонов» бланк накладной с талонами.
В отличии от обычной расходной накладной он должен содержать колонку «Номера талонов».

Информация по номерам талонов заносится в форму вместе с информацией по номенклатуре, количеству и цене расходуемого товара в текстовом виде по форме «с …… по ……». Номера содержат 12 цифр.

Т.е., из табличной формы, в которую попадает данная информация, нужно извлечь информацию по номерам талонов.

В расходной накладной построчно к каждому виду расходуемого топлива заносятся сведения по:

№ п/п, виду топлива, ед., количеству, цене б/НДС, цене с НДС, сумме без скидки, сумме без НДС, сумме с НДС, размеру НДС, номерам талонов.

В конфигурации табличная часть документа имеет следующие наименования:

ТМЦ,            - тип значения Справочник.ТМЦ
Топливо,        - тип значения Справочник.ТМЦ
Партия,        - тип значения Справочник.Партии
Кво,            - тип значения <<число>>
Коэффициент,    - тип значения <<число>>
Ед,            - тип значения Справочник.ЕдиницыИзмерения
ЦенаБезНДС,    - тип значения <<число>>
ЦенаСНДС,        - тип значения <<число>>
СуммаБезСкидки,    - тип значения <<число>>
Скидка,        - тип значения <<число>>
СуммаБезНДС,    - тип значения <<число>>
СуммаСНДС,    - тип значения <<число>>
НДС,            - тип значения <<число>>
НомерТалона,    - тип значения <<строка>>
Себестоимость,    - тип значения <<число>>
КвоВыдано,        - тип значения <<число>>
ОбычнаяЦена    - тип значения <<число>>

В модуле конфигуратора в Процедуре печати
//Создается агрегатный объект «ТаблицаЗначений»:
ТЗн = СоздатьОбъект("ТаблицаЗначений");
//Выгружаем многострочную часть в таблицу значений по реквизитам:
    ВыгрузитьТабличнуюЧасть(ТЗн);
// Сворачиваем таблицу значений по соответствующим значениям колонок, т.е. заменяем все дублирующиеся строки на одну и суммируем значения колонок («указываем группируемые колонки», «указываем суммируемые колонки»): ТЗн.Свернуть("Топливо,ЦенаБезНДС,ЦенаСНДС,Ед,ОбычнаяЦена","Кво,НомерТалона,СуммаБезНДС,НДС,СуммаСНДС,Скидка");

Вариант решения:

Нужно считать информацию с каждой строки в колонке «НомерТалона». Если колонка «Топливо» содержит одинаковое значение,  свернуть строки. При этом в колонке «НомерТалона» нужно просуммировать текстовые значения колонок по маске [«с …… по ……»; «с …… по ……»] до появления 0-го значения.

Или
Можно просмотреть содержимое строк и при наличии в них информации по номерам талонов вывести на печать все строки

Как минимум
Нужно найти способ вывести в каждой строке информацию по номерам талонов (не той, в которой находится позиция курсора), а по каждой новой строке с новым видом топлива и в конце пробить суммы.


В модуле формула <<НомераТалонов ()>>, размещенная в колонке Номера Талонов, выводит значение номеров талонов, на которых находится курсор, в каждой свернутой строке по видам топлива. Нужно найти это условие в модуле и отменить.


P/S/
Сама таблица добавлена вручную методом копирования и ее можно выбрать из списка документов на печать. При этом, добавлена колонка "Номера талонов", вот пытаюсь понять какую функцию (или еще что) прописать в нее, чтобы показывались внесенные номера талонов в соответствующих строках.

Помогите разобраться пожалуйста.
1 mikecool
 
26.04.12
17:24
офигеть, это сколько же набирал то тексту...
2 chief accountant
 
26.04.12
17:25
Слишком много букав
(0) Научись выражаться ясно и коротко, а не техзадание постить
3 mikecool
 
26.04.12
17:26
сделаю за 2тыр
4 chief accountant
 
26.04.12
17:27
(3) Мало, за прочтение (0) ещё 2т
5 Он
 
26.04.12
17:32
Это ТЗ?
Сколько?
6 YoungW
 
26.04.12
17:33
то я пытался сам понять, что нужно сделать, поэтому получилось столько букв. Уж сильно не бейте)
7 povar
 
26.04.12
17:33
без пол литра не разобраться
8 YoungW
 
26.04.12
17:34
для программиста 1с уверен тут нет ничего сложного.
9 Mikeware
 
26.04.12
17:36
(8) несомненно. Сколько?
10 YoungW
 
26.04.12
17:38
Уж для меня лучше научиться ловить рыбу самому. Поэтому то и попросил помочь разораться.
11 Mikeware
 
26.04.12
17:39
(10) ну что ж, "для программиста 1с уверен тут нет ничего сложного".
разбирайся :-)
12 YoungW
 
26.04.12
17:40
Понятно.
13 povar
 
26.04.12
17:40
(10) ученье - свет, а за свет нужно платить.
20 000 руб. мне 10000, тебе 5000 и 5000 Майку, который сделает (0) ))
14 пипец
 
26.04.12
17:40
я так понял проблема много талонов на 1-у строку шоле ?
15 mikecool
 
26.04.12
17:41
(13) согласен ))
16 YoungW
 
26.04.12
17:42
Значит все поставлено на коммерческую основу... Надеялся, что тут есть фанаты своего дела)
17 YoungW
 
26.04.12
17:43
Талоны содержат 12 цифр. В каждой строке они вносятся по форме "с....пр.....".
18 mikecool
 
26.04.12
17:43
(16) ты прав - тут фанаты, и дела у каждого свои )
19 Базис
 
naïve
26.04.12
17:44
(16) Фанатов ВАШЕГО дела тут нет.
20 Он
 
26.04.12
17:44
(16) Тут ленивых халявщиков не любят.
21 YoungW
 
26.04.12
17:44
пипец, нет не много на одну строку. хочу понять, как инициализировать сами талоны в печатной форме. Как из выводить построчно.
22 YoungW
 
26.04.12
17:46
Я понимаю, что в каждом "огороде" есть свои правила и я здесь только появился. Всех правил не знаю. Не ругайте сильно. Что касается ленивости, надеюсь не сильно ленивый.
23 пипец
 
26.04.12
17:47
ТЗ на форму обработки (а ля обработка подбора по значению колонки) которая при закрытии вносит в строку как СЗ (хотя тут варианты с ограничением количества символов)
стругать документ = талон - на откуп того кто писАть будет
ЗЫ а по сути не ТЗ в (0) а некое абстрактное изложение без контрольных точек
24 Eugene_life
 
26.04.12
17:47
(22) В Макет разобрался как добавить колонку?
25 YoungW
 
26.04.12
17:49
Ну, конечно, так и есть, это я для себя писал (как уже излагал, хотел осмыслить с чего начинать и чем заканчивать).
26 YoungW
 
26.04.12
17:49
Eugene_life, в сам бланк я добавил колонку, в модуле это не прописал никак.
27 Eugene_life
 
26.04.12
17:53
(26) у тебя должна быть в модуле процедура "Печать". В ней заполняются параметры Макета. В ней по аналогии сделай заполнение своего
28 YoungW
 
26.04.12
17:54
29 Sedoy
 
26.04.12
17:54
Не взлетит....
30 YoungW
 
26.04.12
17:55
Да процедура имеется.
Процедура Печать()
    Перем ВыбЗначение;
   
    Меню = СоздатьОбъект("СписокЗначений");
    Меню.ДобавитьЗначение("Акт","Акт");
    Меню.ДобавитьЗначение("Спецификация","Спецификация");
    Меню.ДобавитьЗначение("СпецификацияСоСкидкой","Спецификация со скидкой");
    Меню.ДобавитьЗначение("Накладная","Накладная");
    Меню.ДобавитьЗначение("НакладнаяСТалонами","Накладная с талонами");    // добавлена 2012.03.16 НакладнаяСТалонами (Игорь)
    Меню.ДобавитьЗначение("Просто","----------");                            // просто проверка
    Меню.ДобавитьЗначение("Счет","Счёт-фактура");
    Если Меню.ВыбратьЗначение(ВыбЗначение,"",,3,1) <> 1 Тогда
         Возврат;
    КонецЕсли;
   
    ТЗн = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗн);
    ТЗн.Свернуть("Топливо,ЦенаБезНДС,ЦенаСНДС,Ед,ОбычнаяЦена","Кво,НомерТалона,СуммаБезНДС,НДС,СуммаСНДС,Скидка");
   
   
    Таб = СоздатьОбъект("Таблица");
   
    глУстПропись(Гривня, "р");
   
    тЗаказ = "";
    фУкр = ?(Константа.ФормыНаУкраинском = Да, 1, 0);
    Если Заказ.Выбран() = 1 Тогда
         Если Заказ.Вид() = "Договор" Тогда
              тЗаказ = СокрЛП(Заказ.НомерДоговора) + " от " + Заказ.ДатаДок;
         КонецЕсли;
    КонецЕсли;
   Таб.ИсходнаяТаблица(ВыбЗначение);
    Если ВыбЗначение = "Накладная" Тогда
         Если Заказ.Выбран() = 1 Тогда
              тЗаказ = Заказ.ПредставлениеВида() + " № " +СокрЛП(Заказ.НомерДок) + " от " + Заказ.ДатаДок;;
              Если Заказ.Вид() = "Договор" Тогда
                   тЗаказ = глУкр(Заказ.ПредставлениеВида()) + " № " +СокрЛП(Заказ.НомерДоговора) + ?(фУкр = 1, " від "," от ") + Заказ.ДатаДок;
              КонецЕсли;
         Иначе
              тЗаказ = "Без заказа";
         КонецЕсли;
    КонецЕсли;
    Ном = 0;
    ТЗн.ВыбратьСтроки();
    Таб.ВывестиСекцию("Шапка");
    Пока ТЗн.ПолучитьСтроку() = 1 Цикл
         Ном = Ном + 1;
         Таб.ВывестиСекцию("Строка");              
    КонецЦикла;
   
    Если ВыбЗначение = "Спецификация_опт" Тогда
         ТекВысота = Таб.ВысотаТаблицы();
         Обл = Таб.Область(9,10,ТекВысота,10);
         Обл.Объединить();
         Обл = Таб.Область(9,11,ТекВысота,11);
         Обл.Объединить();
    КонецЕсли;
   
    Сч = 0;
    Если (ВыбЗначение = "Спецификация")или (ВыбЗначение = "СпецификацияСоСкидкой") Тогда
         Таб.ВывестиСекцию("Дно_1");          
         Если АЗС.РазмерСписка() > 0 Тогда
              Таб.ВывестиСекцию("Дно_3");
              Для Сч = 1 по АЗС.РазмерСписка() Цикл
                   ТекАЗС = АЗС.ПолучитьЗначение(Сч);
                   АдресАЗС = ТекАЗС.Адрес;
                   Таб.ВывестиСекцию("Адрес");
              КонецЦикла;
         КонецЕсли;    
         Таб.ВывестиСекцию("Дно_2");
    Иначе
         Таб.ВывестиСекцию("Дно");    
    КонецЕсли;
   
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.ПараметрыСтраницы(1,,,,,,,,,1,,); // автомасштаб
    Таб.ТолькоПросмотр(1);
    Таб.Опции(0,0,,);
    Таб.Показать("Выдача талонов","");
КонецПроцедуры
31 Eugene_life
 
26.04.12
17:59
(28) В макете вместо <НомераТалонов1()> напиши <ТЗн.НомерТалона>
32 Eugene_life
 
26.04.12
17:59
(31) + и убедись, что у тебя это поле - выражение, а не текст.
33 YoungW
 
26.04.12
18:00
Думал на основании этого кода можно решить задачу....
ТЗн = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗн);
    ТЗн.Свернуть("Топливо,ЦенаБезНДС,ЦенаСНДС,Ед,ОбычнаяЦена","Кво,НомерТалона,СуммаБезНДС,НДС,СуммаСНДС,Скидка");

Или может не прав?(
34 Он
 
26.04.12
18:00
(22) Ты попал. Тут только сильно ленивые привествуются.
35 YoungW
 
26.04.12
18:01
Eugene_life
сделал. Выводятся пустые поля. Информация не вытягивается..
36 YoungW
 
26.04.12
18:02
Пробовал уже это несколько ранее... Что только уже не подставлял туда.
37 Eugene_life
 
26.04.12
18:03
(35) у тебя точно колонка в Таб части называется "НомерТалона"? Тогда тебе ее складывать не нужно:
Вместо ТЗн.Свернуть("Топливо,ЦенаБезНДС,ЦенаСНДС,Ед,ОбычнаяЦена","Кво,НомерТалона,СуммаБезНДС,НДС,СуммаСНДС,Скидка");
нужно
ТЗн.Свернуть("Топливо,ЦенаБезНДС,ЦенаСНДС,Ед,ОбычнаяЦена,НомерТалона","Кво,СуммаБезНДС,НДС,СуммаСНДС,Скидка");
38 YoungW
 
26.04.12
18:06
Угу и это пробовал. Убирал "ТЗн.Свернуть". Единственное в некоторых накладных бывает довольно много значений. И еще выводилась информация у меня по позиции на которой стоит курсор. Только туда вставлял функцию.
39 Eugene_life
 
26.04.12
18:10
(38) Если у тебя в табличной части есть значения, и названия совпадают - то должно выводиться. Попробуй всунуть:
Сообщить(ТЗн.НомерТалона);
перед вот этой:
Таб.ВывестиСекцию("Строка");
Ищи, где ошибка. Скорее всего - нет данных в ТЗн.
40 YoungW
 
26.04.12
18:13
"Таб.ВывестиСекцию" - не нахожу в модуле(
41 Eugene_life
 
26.04.12
18:14
Пока ТЗн.ПолучитьСтроку() = 1 Цикл
    Ном = Ном + 1;
    Таб.ВывестиСекцию("Строка");              
КонецЦикла;
42 Mikeware
 
26.04.12
18:15
(39) ошибка у него там же, где и всегда...
43 Eugene_life
 
26.04.12
18:15
(42) Где же?
44 Mikeware
 
26.04.12
18:17
(43) В ДНК... :-)
45 YoungW
 
26.04.12
18:17
Mikeware
я понимаю, что вам есть возможность гордиться своими знаниями в данном вопросе. Будьте снисходительны, если конечно хватить терпения.
46 YoungW
 
26.04.12
18:17
Глупо надмеваться знаниями.
47 YoungW
 
26.04.12
18:19
Eugene_life спасибо большое. Буду ковыряться дальше. И всем спасибо за терпение.
48 ЧеловекДуши
 
26.04.12
18:23
(45)Ты пости ссылками, типо числом в скобках (0), так интересней.
Так же, судя по стонам, вы вообще кто по профессии?
Ну не как не программист :)
...
А еже ли вы Дворник, то мой вам совет, либо учитесь программировать и читаете две жёлтые книги по описанию языка 1С 7.7.

Либо нанимаете программиста ;)
49 ЧеловекДуши
 
26.04.12
18:24
+ Тут все фанаты, но халявщиков тут не любят ;)
50 Mikeware
 
26.04.12
18:25
(46) я не знаю, что такое "надмеваться", но могу сказать одно: либо учитесь (примеров , да и учебников достаточно), либо "вызывайте специалиста"©
подсказать сложный вопрос - запросто. а делать за вас вашу работу бесплатно - западло...
51 Vladal
 
26.04.12
18:30
(21) Что-то для новичка ты в курсе дела, как пользоваться ссылками
52 Vladal
 
26.04.12
18:31
Халявщикам просьба обращаться в rfpro.ru/issues/5/3/
53 zak555
 
26.04.12
19:12
что делать-то надо ?
54 YoungW
 
27.04.12
09:36
Mikeware(46) я не знаю, что такое "надмеваться", но могу сказать одно: либо учитесь (примеров , да и учебников достаточно), либо "вызывайте специалиста"©
подсказать сложный вопрос - запросто. а делать за вас вашу работу бесплатно - западло...
Поставил бы лайк под данным сообщением. Пошел читать желтую книжку...
Независимо от того, куда вы едете — это в гору и против ветра!