8.х Создание ТН и ТТН

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем M a x i m, 29 май 2012.

  1. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Всем привет,
    помогите советом или направлением

    стоит передо мной задача сделать автоматизированную ТН и ТТН "Печать ТТН". Я скачал вашу ВПФ. Автоматизации там мало - собственно типовая, что уж там. Дык вот при заполнении приходится вводить марку авто, номер авто, водитель, водительское удостоверение. Это должно тянуться автоматически, чтоб бухам руками текст не вбивать. Т.е. за каждым грузополучателем (или, если он не указан, то за контрагентом) закреплен водитель, а за водителем закреплено удостверение, марка авто, номер авто. Соответственно при указании грузополучателя в документе Реализация в правильной ТТН-ке и ТН-ке будет отображаться соответствующие недостающие сведения.

    Чтобы не слететь с поддержки, я сделал так:
    - в справочнике Контрагенты создал дополнительный реквизит Водитель с типом данных Справочник.ФизическиеЛица,
    - в справочнике Физические лица создал дополнительные реквизиты ВодитеУдостоверение, МаркаАвто, НомерАвто. Все с типом "строка".

    Как теперь получить ко все этой связке доступ? Т.е. при выборе документа в поле выбора вверху, сразу заполнялись все эти поля: водитель, удостоверение, марка и номер авто. Ведь жизнь так всем облегчится!

    Заранее спасибо.

    p.s. типовая актуальная Бухгалтерия 8.2.
    p.p.s. собссно для меня это первый опыт в кодинге на восьмерке. В 7-ке много чего сделал, а тут не знаю с как подступиться. На обучении все гладко было, а тут смотрю как на новые ворота.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вот давайте с самого начала. Вот вы создали реквизиты в справочниках(надеюсь правильно :))) ), в Предприятии заполнили эти реквизиты ? (По идее нужно было добавлять в документ реквизит Водитель, ведь не только может этот водитель ездить к этому контрагенту, ну это так, мысли вслух:))) ). Переходим далее.
    В коде, где у нас должны заполняться эти данные, смотрим запрос, должен выдергиваться Контрагент. Ага, уже что-то. Раз мы можем выдернуть контрагента, соответственно мы можем добраться и до реквизита Водитель, если он является реквизитом справочника Контрагенты. Далее нам нужно просто получить эти данные (либо прям в запросе, либо программно, например, Контрагент.Водитель). И так с остальными данными. После получения этих данных можно их выводить на печатную форму (предварительно, если их нет, создать соответствующие параметры).
    Суть немного разъяснил :) ?
  3. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    сорри, забыл... у нас обычно конкретный водитель закреплен за конкретным контрагентом надолго, так что именно в документе нет большой необходимости указывать его. Водитель соответствует указанному в документе контрагенту.

    да, только я это уже написал, вопрос в том как это сделать? Как добраться до дополнительного реквизита.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    В смысле как добраться? Можно через запрос, в вашей ВПФ есть запрос? Если есть показывайте :)
  5. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    При выборе документа Реализация выполняется процедура ДокументПриИзменении()
    она вызывает процедуру ЗаполнитьДанныеПечатиТТНПриложение4()
    остальной код, вроде бы, не относится к вопросу
    Код:
    // Процедура заполняет форму заполнения бланков "Транспортная накладная" и "Сопроводительная ведомость".
    Процедура ЗаполнитьДанныеПечатиТТНПриложение4()
    ДанныеДокумента = ПечатьТТН(Истина);
    
    Для Каждого ЗначениеЗаполненияБланкаТТН Из ДанныеДокумента Цикл
    Если ЭлементыФормы.Найти(ЗначениеЗаполненияБланкаТТН.Ключ) <> Неопределено Тогда
    ЭтаФорма[ЗначениеЗаполненияБланкаТТН.Ключ] = ЗначениеЗаполненияБланкаТТН.Значение;
    КонецЕсли;
    КонецЦикла;
    Пункт0_1 = 1;
    Пункт0_0 = 1;
    КонецПроцедуры
    
    // Процедура - обработчик события "ПриИзменении" поля ввода "Документ".
    Процедура ДокументПриИзменении(Элемент)
    ОчиститьДанныеПечатиТТНПриложение4();
    
    Если НЕ ЗначениеЗаполнено(Документ) Тогда
    Возврат;
    КонецЕсли;
    
    ЗаполнитьДанныеПечатиТТНПриложение4();
    КонецПроцедуры //
    
  6. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    А запрос тут
    Код:
     
    
    // Функция осуществляет печать формы "1-Т"
    // на основании документа "РеализацияТоваровУслуг".
    //
    Функция ПечатьТТН(ПолучитьДанныеПечати = Ложь)
    Перем ПодразделениеОтветственныхЛиц;
    
    МетаданныеДокумента = Документ.Метаданные();
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Документ", Документ);
    Если ОбщегоНазначения.ЕстьРеквизитДокумента("КурсВзаиморасчетов", МетаданныеДокумента) Тогда
    Запрос.УстановитьПараметр("Курс", ?(Документ.ВалютаДокумента.Код = "810", 1, Документ.КурсВзаиморасчетов));
    Запрос.УстановитьПараметр("Кратность", ?(Документ.ВалютаДокумента.Код = "810", 1, ?(Документ.КратностьВзаиморасчетов = 0, 1, Документ.КратностьВзаиморасчетов)));
    Иначе
    Запрос.УстановитьПараметр("Курс", 1);
    Запрос.УстановитьПараметр("Кратность", 1);
    КонецЕсли;
    Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
    Запрос.УстановитьПараметр("ПустойСчет", Справочники.БанковскиеСчета.ПустаяСсылка());
    
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номер,
    | Дата КАК ДатаДокумента,
    | Организация,
    | Организация КАК ЮрФизЛицо,
    | Организация КАК Поставщик,
    | Организация КАК Контрагент,
    | Организация КАК Руководители,
    | ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
    | ТОГДА Организация
    | ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,
    | ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
    | ТОГДА Организация.ЮрФизЛицо
    | ИНАЧЕ Грузоотправитель.ЮрФизЛицо
    | КОНЕЦ КАК ГрузоотправительЮрФизЛицо,
    | ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
    | ТОГДА Контрагент
    | ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
    | ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
    | ТОГДА Контрагент.ЮрФизЛицо
    | ИНАЧЕ Грузополучатель.ЮрФизЛицо
    | КОНЕЦ КАК ГрузополучательЮрФизЛицо,
    | БанковскийСчетОрганизации КАК БанковскийСчет,
    | Контрагент КАК Покупатель,
    | Контрагент КАК Плательщик,
    | ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
    | ВалютаДокумента,
    | КурсВзаиморасчетов КАК Курс,
    | КратностьВзаиморасчетов КАК Кратность,
    | УчитыватьНДС,
    | СуммаВключаетНДС,
    | Товары.(
    | НомерСтроки КАК Номер,
    | Номенклатура,
    | Номенклатура.НаименованиеПолное КАК ТоварНаименование,
    | Номенклатура.Код КАК ТоварКод,
    | Количество,
    | КоличествоМест,
    | Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаНаименование,
    | ЕдиницаИзмерения КАК ВидУпаковки,
    | ЕдиницаИзмерения.Код КАК БазоваяЕдиницаКодПоОКЕИ,
    | Коэффициент,
    | Цена * &Курс / &Кратность КАК Цена,
    | Сумма * &Курс / &Кратность КАК Сумма,
    | СуммаНДС * &Курс / &Кратность КАК СуммаНДС,
    | Сумма КАК СуммаВВалютеДокумента,
    | СуммаНДС КАК СуммаНДСВВалютеДокумента,
    | СтавкаНДС
    | )
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |
    |ГДЕ
    | РеализацияТоваровУслуг.Ссылка = &Документ";
    
    Если ТипЗнч(Документ) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номер,
    | Дата КАК ДатаДокумента,
    | Организация,
    | Организация КАК ЮрФизЛицо,
    | Организация КАК Поставщик,
    | Организация КАК Контрагент,
    | Организация КАК Руководители,
    | ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
    | ТОГДА Организация
    | ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,
    | ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
    | ТОГДА Организация.ЮрФизЛицо
    | ИНАЧЕ Грузоотправитель.ЮрФизЛицо
    | КОНЕЦ КАК ГрузоотправительЮрФизЛицо,
    | ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
    | ТОГДА Контрагент
    | ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
    | ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
    | ТОГДА Контрагент.ЮрФизЛицо
    | ИНАЧЕ Грузополучатель.ЮрФизЛицо
    | КОНЕЦ КАК ГрузополучательЮрФизЛицо,
    | &ПустойСЧет КАК БанковскийСчет,
    | Контрагент КАК Покупатель,
    | Контрагент КАК Плательщик,
    | ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
    | ВалютаДокумента,
    | 1 КАК Курс,
    | 1 КАК Кратность,
    | Ложь,
    | Истина,
    | Товары.(
    | НомерСтроки КАК Номер,
    | Номенклатура,
    | Номенклатура.НаименованиеПолное КАК ТоварНаименование,
    | Номенклатура.Код КАК ТоварКод,
    | Количество,
    | Количество КАК КоличествоМест,
    | Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаНаименование,
    | Номенклатура.БазоваяЕдиницаИзмерения КАК ВидУпаковки,
    | Номенклатура.БазоваяЕдиницаИзмерения.Код КАК БазоваяЕдиницаКодПоОКЕИ,
    | 1,
    | 0 КАК Цена,
    | 0 КАК Сумма,
    | 0 КАК СуммаНДС,
    | 0 КАК СуммаВВалютеДокумента,
    | 0 КАК СуммаНДСВВалютеДокумента,
    | 0
    | )
    |ИЗ
    | Документ.ПередачаТоваров КАК ПередачаТоваров
    |
    |ГДЕ
    | ПередачаТоваров.Ссылка = &Документ";
    
    ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(Документ);
    
    КонецЕсли;
    
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вот как раз в этом месте
    Код:
    ДанныеДокумента = ПечатьТТН(Истина);
    у вас как раз и идет сбор данных по документу. Вот ее и нужно ковырять.

    Вот в первом запросе(в тектс запроса) попробуйте добавить
    Код:
    Контрагент.Водитель КАК Водитель
    Далее по коду нужно смотреть где заполняется параметры в макете, и прописать небольшой кусочек кода, который будет заполнять эти параметры.
  8. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Поле не найдено "Контрагент.Водитель"
    Контрагент.<<?>>Водитель КАК Водитель
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Попробуйте ваш запрос открыть в конструкторе запроса. Ведь если вы добавили реквизит справочника Контрагенты, Водитель должен быть :).
    Можно пойти еще одним путем, посмотреть в коде, где выводится контрагент, поставить туда точку останова, и посмотреть в отладчике, какие значения имеют переменные для вывода в макет.
Похожие темы
  1. AlexFIG
    Ответов:
    2
    Просмотров:
    721
Загрузка...

Поделиться этой страницей