![]() |
![]() |
![]() |
|
v7: Помогите добавить ИтогоКоличество | ☑ | ||
---|---|---|---|---|
0
GskIvan
04.08.12
✎
15:47
|
Ничего в 1С не понимаю, помогите пожалуйста добавить строчку ИтогоКоличество.
|
|||
1
GskIvan
04.08.12
✎
15:47
|
//*****************************************************************************
// Описание переменных Перем СписокДействий; // Список действий по документу Перем НаименованиеСкладаОтправителя; Перем НаименованиеСкладаПолучателя; Перем НаименованиеФирмы; Перем СтараяДата; Перем НачальнаяДатаДокумента; // Для контроля даты документа Перем ОстаткиТоваров, РезервыТоваров, ОбщРег; //***************************************************************************** // "служебные" функции и процедуры //***************************************************************************** Функция ЗаголовокФормы() Перем Заголовок, Название; Заголовок = "Накладная перемещения"; Название = "Накладная №"; //Форма.НазваниеДокумента.Цвет(-1); Если Выбран() = 1 Тогда Если Проведен() = 1 Тогда Заголовок = Заголовок + ".Проведен"; Иначе Заголовок = Заголовок + ".Не проведен"; КонецЕсли; Иначе Заголовок = Заголовок + ".Новый"; КонецЕсли; Форма.Заголовок(Заголовок); Возврат Название; КонецФункции //ЗаголовокФормы //***************************************************************************** // функции и процедуры, вызываемые из формул элементов диалога //****************************************************************************** //Процедура ПересчетРегистров() // ОбщРег = СоздатьОбъект("Регистры"); // ОстаткиТоваров = ОбщРег.ОстаткиТоваров; // РезервыТоваров = ОбщРег.РезервыТоваров; // // Если (ДатаДок < ПолучитьДатуТА()) И (Константа.ОстаткиНаДатуДокумента = Да) Тогда // ОстаткиТоваров.ВременныйРасчет(); // РезервыТоваров.ВременныйРасчет(); // ОбщРег.РассчитатьРегистрыПо(ДатаДок); // // КонецЕсли; // //КонецПроцедуры //****************************************************************************** Процедура ВыборДаты() глПриИзмененииДатыДокумента(Контекст, СтараяДата); //ПересчетРегистров(); Если ПустоеЗначение(Фирма) = 0 Тогда НаименованиеФирмы = Фирма.Наименование; КонецЕсли; КонецПроцедуры //***************************************************************************** Процедура ВыборФирмы() Перем ВыбФирма; ВыбФирма = СоздатьОбъект("Справочник.Фирмы"); ВыбФирма.ИспользоватьДату(ДатаДок); Если ВыбФирма.Выбрать("Выберите фирму","")>0 Тогда Фирма=ВыбФирма.ТекущийЭлемент(); НаименованиеФирмы = Фирма.Наименование; КонецЕсли; КонецПроцедуры //***************************************************************************** Процедура ВыборОснования() // Процедура по кнопке редактирования основания в документе Перем КонтекстДокумента; КонтекстДокумента = глВзятьКонтекст(Контекст); ОткрытьФормуМодально("Обработка.ОснованиеДокумента", КонтекстДокумента); Форма.ТекстОснования.Заголовок(СокрП(Основание)); КонецПроцедуры //****************************************************************************** Процедура ВыборСклада(ВидСклада) Перем ВыбСклад; ВыбСклад = СоздатьОбъект("Справочник.МестаХранения"); ВыбСклад.ИспользоватьДату(ДатаДок); Если ВыбСклад.Выбрать("Склад","")>0 Тогда Если ВидСклада = "получатель" Тогда СкладПолучатель = ВыбСклад.ТекущийЭлемент(); НаименованиеСкладаПолучателя = СкладПолучатель.Наименование; ИначеЕсли ВидСклада = "отправитель" Тогда Склад = ВыбСклад.ТекущийЭлемент(); НаименованиеСкладаОтправителя = Склад.Наименование; КонецЕсли; КонецЕсли; КонецПроцедуры //****************************************************************************** Процедура ПечатьТОРГ13() Перем ИсхТаблица; Перем ИтогоКоличество, ИтогоСумма; // итоги по странице Перем ВсегоКоличество, ВсегоСумма; // итоги по документу // номер текущей страницы Перем НомерСтраницы; // макс. количество строк, которое влезает на страницу (без шапки и подвала) Перем СтрокНаСТранице; // высота шапки и подвала документах в товарных строках Перем ВысотаШапки, ВысотаПодвала; // количество выведеных строк Перем ВыведеноНаСтраницу, ВыведеноВсего; // количество строк документа Перем ВсегоСтрок; // используется для расчета количества строк, которое может вместить страница Перем ОстатокСтрок; Перем Себестоимость; ВсегоСтрок = КоличествоСтрок(); ВыведеноНаСтраницу = 0; ВыведеноВсего = 0; НомерСтраницы = 1; // установка размеров секций ВысотаШапки = 14; ВысотаПодвала = 8; СтрокНаСТранице = 32; // инициализация Себестоимость = 0; ВсегоКоличество = 0; ВсегоСумма = 0; ИтогоКоличество = 0; ИтогоСумма = 0; Фирма.ИспользоватьДату(ДатаДок); // сформируем таблицу, содержащую себестоимость товаров ВремРегистры=СоздатьОбъект("Регистры"); РегПартии=ВремРегистры.ПартииТоваров; СписокСтатусов=СоздатьОбъект("СписокЗначений"); СписокСтатусов.ДобавитьЗначение(Купленный); СписокСтатусов.ДобавитьЗначение(Принятый); ТЗИтоги=СоздатьОбъект("ТаблицаЗначений"); РегПартии.УстановитьЗначениеФильтра("Фирма",глПустаяФирма); РегПартии.УстановитьЗначениеФильтра("Статус",СписокСтатусов,2); Если (ДатаДок<ПолучитьДатуТА()) Тогда РегПартии.ВременныйРасчет(); ВремРегистры.РассчитатьРегистрыПО(ДатаДок); КонецЕсли; РегПартии.ВыгрузитьИтоги(ТЗИтоги,0,1); ТЗИтоги .Свернуть("Товар","Стоимость,СтоимостьНП,НДС,ОстатокТовара"); ИсхТаблица = СоздатьОбъект("Таблица"); ИсхТаблица.ИсходнаяТаблица("ТОРГ13"); ИсхТаблица.ВывестиСекцию("Шапка"); ИсхТаблица.ВывестиСекцию("Заголовок"); // выводим строки документа ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл // получим количество строк, которое еще можно поместить на странице ОстатокСтрок = СтрокНаСТранице - ВыведеноНаСтраницу; // если 1-я страница, то уменьшим количество строк на высоту шапки Если НомерСтраницы = 1 Тогда ОстатокСтрок = ОстатокСтрок - ВысотаШапки; КонецЕсли; Если ВыведеноВсего = ВсегоСтрок -1 Тогда // выводим последнюю строку ОстатокСтрок = ОстатокСтрок - ВысотаПодвала; КонецЕсли; Если Не(ОстатокСтрок > 0) Тогда // выводим итоги по странице ИсхТаблица.ВывестиСекцию("Итог_по_странице"); // переход на новую страницу ИсхТаблица.НоваяСтраница(); ИсхТаблица.ВывестиСекцию("Заголовок"); ВыведеноНаСтраницу = 0; // обнуляем итоги по старанице ИтогоКоличество = 0; ИтогоСумма = 0; // увеличиваем номер страницы НомерСтраницы = НомерСтраницы + 1; КонецЕсли; // получим себестоимость товара НомСтр=""; Если ТЗИтоги.НайтиЗначение(Товар,НомСтр,"Товар")=0 Тогда Себестоимость = 0; Иначе ТЗИтоги.ПолучитьСтрокуПоНомеру(НомСтр); Если ТЗИтоги.ОстатокТовара = 0 Тогда Себестоимость = 0; Иначе Себестоимость = (ТЗИтоги.Стоимость+ТЗИтоги.СтоимостьНП+ТЗИтоги.НДС)/ТЗИтоги.ОстатокТовара; Себестоимость = глПересчет(Себестоимость,Товар.ВалютаУчета,ДатаДок,Рубли,ДатаДок); КонецЕсли; КонецЕсли; ВсегоКоличество = ВсегоКоличество + Количество; ВсегоСумма = ВсегоСумма + Себестоимость * Количество; ИтогоКоличество = ИтогоКоличество + Количество; ИтогоСумма = ИтогоСумма + Себестоимость * Количество; ИсхТаблица.ВывестиСекцию("Строка"); ВыведеноНаСтраницу = ВыведеноНаСтраницу + 1; ВыведеноВсего = ВыведеноВсего + 1; КонецЦикла; // заполним остаток страницы пустыми строками //ОстатокСтрок = СтрокНаСТранице - ВыведеноНаСтраницу - ВысотаПодвала; //Для Инд=1 По ОстатокСтрок Цикл // ИсхТаблица.ВывестиСекцию("Пустая_строка"); //КонецЦикла; ИсхТаблица.ВывестиСекцию("Итог_по_странице"); ИсхТаблица.ВывестиСекцию("Подвал"); ИсхТаблица.Опции(0,0,0,0,ПарСтрДок); ИсхТаблица.Защита(Константа.ФлагЗащитыТаблиц); ИсхТаблица.ТолькоПросмотр(1); ИсхТаблица.Показать("Печать накладной на перемещение",""); КонецПроцедуры //****************************************************************************** Процедура Печать() Фирма.ИспользоватьДату(ДатаДок); Таб=СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном=0; Пока ПолучитьСтроку() = 1 Цикл Ном=Ном+1; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,0,0,ПарСтрДок); Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("Печать накладной",""); КонецПроцедуры //******************************************************************************** // НАЗВАНИЕ: ВыборПечатнойФормы // ПАРАМЕТРЫ: // Нет. // ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: // Нет. // ОПИСАНИЕ: // выводит на экран всплывающее меню, в котором можно выбрать печатную форму. Процедура ВыборПечатнойФормы() Перем СписокФорм, ВыбЗначение; // формируем список СписокФорм = СоздатьОбъект("СписокЗначений"); СписокФорм.ДобавитьЗначение(1, "Накладная на перемещение"); СписокФорм.ДобавитьЗначение(2, "ТОРГ-13"); // открываем список ввиде меню Если СписокФорм.ВыбратьЗначение(ВыбЗначение, , , , 1) = 1 Тогда // значение выбрано Если ВыбЗначение = 1 Тогда Печать(); Иначе ПечатьТОРГ13(); КонецЕсли; КонецЕсли; КонецПроцедуры //****************************************************************************** Функция КонтрольОстатка() Перем ТекОстаток; Если (Выбран() = 0) ИЛИ (ДатаДок = ПолучитьДатуТА()) Тогда // если новый или дата равна дате ТА ТекОстаток = глПолучитьОстатокТовара(Товар, Единица, ?(ТипУчета = Фин, Фирма, глПустаяФирма), Склад, 0); Возврат СокрЛ(Формат(ТекОстаток, глФорматКоличестваВформах)) + " " + Единица.ТипЕдиницы; Иначе Возврат ""; КонецЕсли; КонецФункции //***************************************************************************** // Предопределенные процедуры //****************************************************************************** Процедура ВводНового(Скопирован) глЗаполнитьШапку(Контекст, Скопирован); Если Скопирован = 1 Тогда //копирование документа Возврат; КонецЕсли; ДатаДок = РабочаяДата(); КонецПроцедуры //****************************************************************************** Процедура ВводНаОсновании(ДокОснование) Предупреждение("Документ "+ПредставлениеВида()+" не вводят на основании других документов!"); СтатусВозврата(0); КонецПроцедуры //****************************************************************************** Процедура ПриОткрытии() Парам = Форма.Параметр; Если Лев(Парам, 13) = "ПЕЧАТЬСПРОСМ_" Тогда ВыборПечатнойФормы(); СтатусВозврата(0); Возврат; КонецЕсли; НачальнаяДатаДокумента = ДатаДок; глПроверкаРазрешенияРедактирования(Контекст); глУстановкаРеквизитаТип(Контекст); Тип.ДобавитьЗначение("Упр."); Тип.ДобавитьЗначение("Общ."); Тип.ДобавитьЗначение("Фин."); Тип.ТекущаяСтрока(ТипУчета+1); Если Форма.ТолькоПросмотр()=1 Тогда Форма.кнФирма.Доступность(0); Форма.КнСкладПолучатель.Доступность(0); Форма.КнСкладОтправитель.Доступность(0); Форма.кнОснование.Доступность(0); Форма.кнПодборПоКаталогу.Доступность(0); Форма.кнИзменитьСостав.Доступность(0); Форма.кнЗаписать.Доступность(0); Форма.кнПровести.Доступность(0); Форма.ОК.Доступность(0); Форма.КнопкаПоУмолчанию("Закрыть"); Иначе Форма.КнопкаПоУмолчанию("ОК"); КонецЕсли; // Формируем информационные строки Форма.ТекстОснования.Заголовок(СокрП(Основание)); НаименованиеФирмы = Фирма.Наименование; НаименованиеСкладаПолучателя = СкладПолучатель.Наименование; НаименованиеСкладаОтправителя = Склад.Наименование; СтараяДата = ДатаДок; //ПересчетРегистров(); КонецПроцедуры //***************************************************************************** Процедура ОбработкаПодбора(Выб) //Предопределенная процедура глПриОбработкеПодбора(Выб,Контекст); КонецПроцедуры //Обработка подбора //***************************************************************************** Процедура ПриЗаписи() //Предопределенная процедура Если глМожноЗаписатьДокумент(Контекст)=0 Тогда СтатусВозврата(0); ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда СтатусВозврата(0); КонецЕсли; КонецПроцедуры //***************************************************************************** //Инициализирум список действий по кнопке "Действия" СписокДействий = СоздатьОбъект("СписокЗначений"); СписокДействий.ДобавитьЗначение("Отчет о движениях документа"); СписокДействий.ДобавитьЗначение("Отчет о бухгалтерских проводках"); СписокДействий.ДобавитьЗначение("Открыть в журнале"); НаименованиеСкладаОтправителя = "<не выбран>"; НаименованиеСкладаПолучателя = "<не выбран>"; НаименованиеФирмы = "<не выбрана>"; |
|||
2
GskIvan
04.08.12
✎
15:49
|
Пишу в таблице <ИтогоКоличество> а результат 0, помогите
|
|||
3
GskIvan
04.08.12
✎
15:50
|
т.е не 0, а не считает вообще )
|
|||
4
m-serg74
04.08.12
✎
15:50
|
Итого("Количество") может
|
|||
5
m-serg74
04.08.12
✎
15:51
|
Итог точнее а не Итого
|
|||
6
m-serg74
04.08.12
✎
15:54
|
а в таблице ячейка там где ИтогоКоличество - это Тип = Выражение ?
|
|||
7
m-serg74
04.08.12
✎
15:54
|
угловые скобки не вручную писать надо а тип у ячейки делать - Выражение
|
|||
8
m-serg74
04.08.12
✎
15:56
|
ТС ты где?
|
|||
9
GskIvan
04.08.12
✎
16:00
|
Выражение стоит, там 2 таблице к одному модулю, во второй написано ИтогоКоличество и ВсегоКоличество и всё считает
|
|||
10
m-serg74
04.08.12
✎
16:02
|
где в коде выводится строка где должно вывестись ИтогоКоличество , перед этим сделай Сообщить(ИтогоКоличество) и посмотри что там
|
|||
11
m-serg74
04.08.12
✎
16:05
|
Процедура Печать()
Фирма.ИспользоватьДату(ДатаДок); Таб=СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном=0; Пока ПолучитьСтроку() = 1 Цикл Ном=Ном+1; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,0,0,ПарСтрДок); Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("Печать накладной",""); КонецПроцедуры вот этот коод твою таблицу выводит? |
|||
12
GskIvan
04.08.12
✎
16:08
|
не знаю ) там 1 вариант печати идёт на "таблица" а второй на "Торг13"
так вот на торг13 написано // инициализация Себестоимость = 0; ВсегоКоличество = 0; ВсегоСумма = 0; ИтогоКоличество = 0; ИтогоСумма = 0; а где модуль для "Таблица" ? |
|||
13
m-serg74
04.08.12
✎
16:11
|
ну а у тебя где ИтогоКоличество считается?
|
|||
14
GskIvan
04.08.12
✎
16:12
|
и вот внизу выдаёт Переменная не определена <ИтогоКоличество>
|
|||
15
GskIvan
04.08.12
✎
16:12
|
считает в Торг13
|
|||
16
m-serg74
04.08.12
✎
16:12
|
да это две разные процецуры!!!
|
|||
17
m-serg74
04.08.12
✎
16:13
|
причем тут ТОРГ-13
|
|||
18
GskIvan
04.08.12
✎
16:14
|
так эти 2 таблицы в одном модуле
|
|||
19
GskIvan
04.08.12
✎
16:15
|
вообще это 2 накладные Списание и перемещение, при печати считает только количество строк, надо добавить количество штук, вот первоначальная задача ))
|
|||
20
m-serg74
04.08.12
✎
16:15
|
ну да и в одной конфигурации... и чё теперь?
|
|||
21
m-serg74
04.08.12
✎
16:16
|
(16) внимательно подумай
|
|||
22
GskIvan
04.08.12
✎
16:17
|
//*****************************************************************************
// Описание переменных Перем СписокДействий; // Список действий по документу Перем СтараяДата; Перем ВариантыЗаполнения; Перем НачальнаяДатаДокумента; // Для контроля даты документа Перем ОстаткиТоваров, РезервыТоваров, ОбщРег; //***************************************************************************** // "служебные" функции и процедуры //***************************************************************************** Функция ЗаголовокФормы() Перем Заголовок, Название; Заголовок = "Акт списания"; Название = "Акт списания №"; //Форма.НазваниеДокумента.Цвет(-1); Если Выбран() = 1 Тогда Если Проведен() = 1 Тогда Заголовок = Заголовок + ".Проведен"; Иначе Заголовок = Заголовок + ".Не проведен"; КонецЕсли; Иначе Заголовок = Заголовок + " Новый"; КонецЕсли; Форма.Заголовок(Заголовок); Возврат Название; КонецФункции //ЗаголовокФормы //****************************************************************************** Процедура ОбновитьНадписи() Форма.ТекстФирмы.Заголовок(глСтрокаФирмы(Контекст)); Форма.ТекстОснования.Заголовок(СокрП(Основание)); КонецПроцедуры //***************************************************************************** // функции и процедуры, вызываемые из формул элементов диалога //****************************************************************************** //Процедура ПересчетРегистров() // ОбщРег = СоздатьОбъект("Регистры"); // ОстаткиТоваров = ОбщРег.ОстаткиТоваров; // РезервыТоваров = ОбщРег.РезервыТоваров; // // Если (ДатаДок < ПолучитьДатуТА()) И (Константа.ОстаткиНаДатуДокумента = Да) Тогда // ОстаткиТоваров.ВременныйРасчет(); // РезервыТоваров.ВременныйРасчет(); // ОбщРег.РассчитатьРегистрыПо(ДатаДок); // // КонецЕсли; // //КонецПроцедуры //****************************************************************************** Процедура ВыборДаты() глПриИзмененииДатыДокумента(Контекст, СтараяДата); //ПересчетРегистров(); ОбновитьНадписи(); КонецПроцедуры //***************************************************************************** Процедура ВыборФирмы() // по кнопке редактирования параметров фирмы в документе Перем КонтекстДокумента; КонтекстДокумента = глВзятьКонтекст(Контекст); ОткрытьФормуМодально("Обработка.ИнформацияОфирме", КонтекстДокумента); ОбновитьНадписи(); КонецПроцедуры //***************************************************************************** Процедура НачальноеЗаполнение(Способ,НачальноеЗаполнение) Перем ТаблицаДокумента; Если Способ = "ДокументОснование" Тогда Если ДокументОснование.Вид() = "ПриходнаяНакладная" Тогда ДокументОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента); ЗагрузитьТабличнуюЧасть(ТаблицаДокумента); Иначе ДокОснования = ДокументОснование; ДокОснования.ВыбратьСтроки(); Пока ДокОснования.ПолучитьСтроку()=1 Цикл Если ДокОснования.Количество>ДокОснования.ИнвКоличество Тогда НоваяСтрока(); Товар=ДокОснования.Товар; Количество=ДокОснования.Количество-ДокОснования.ИнвКоличество; Единица=ДокОснования.Единица; Коэффициент=ДокОснования.Коэффициент; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры //***************************************************************************** Процедура ОбработчикПоКнопкеЗаполнить() Перем Способ; Способ = глВыборСпособаЗаполнения(Контекст,ВариантыЗаполнения); Если ПустоеЗначение(Способ)=0 Тогда УдалитьСтроки(); НачальноеЗаполнение(Способ,Да); Если КоличествоСтрок()=0 Тогда Предупреждение("По выбранному способу заполнения состав оказался пустым."); КонецЕсли; КонецЕсли; КонецПроцедуры //***************************************************************************** Процедура ВыборОснования() // Процедура по кнопке редактирования основания в документе КонтекстДокумента = глВзятьКонтекст(Контекст); ДокОснование=ДокументОснование; ОткрытьФормуМодально("Обработка.ОснованиеДокумента", КонтекстДокумента); Если (ДокОснование<>ДокументОснование) И (ПустоеЗначение(ДокументОснование)=0) Тогда СпособЗаполнения=глВыборСпособаЗаполнения(Контекст,ВариантыЗаполнения,"по документу-основанию"); Если ПустоеЗначение(СпособЗаполнения)=0 Тогда УдалитьСтроки(); НачальноеЗаполнение(СпособЗаполнения,Да); Если КоличествоСтрок()=0 Тогда Предупреждение("По выбранному способу заполнения состав оказался пустым."); КонецЕсли; КонецЕсли; КонецЕсли; ОбновитьНадписи(); КонецПроцедуры //****************************************************************************** Процедура Печать() Фирма.ИспользоватьДату(ДатаДок); Таб=СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); ВыбратьСтроки(); Ном=0; Пока ПолучитьСтроку() = 1 Цикл Ном=Ном+1; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.Опции(0,0,0,0,ПарСтрДок); Таб.Защита(Константа.ФлагЗащитыТаблиц); Таб.ТолькоПросмотр(1); Таб.Показать("Печать акта...",""); КонецПроцедуры // Печать //******************************************************************************** // НАЗВАНИЕ: ПечатьТОРГ16 // ПАРАМЕТРЫ: // Нет. // ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: // Нет. // ОПИСАНИЕ: // Процедура ПечатьТОРГ16() Перем КолвоНаСтранице; Перем ВысотаПодвала; Перем ТекСтрокаНаСтр, ТекСтрока; Перем ПечФорма; Перем ПечЦена, ПечСумма, ПечСуммаИтого; Перем РегПартии, ЦеныТоваров; Перем Поз; Если Проведен()=0 Тогда Сообщить("Заполение сумм в форме ТОРГ-16 возможно только при печати проведенного документа!"); КонецЕсли; Фирма.ИспользоватьДату(ДатаДок); ПечЦена = 0; ПечСумма = 0; ПечСуммаИтого = 0; // формируем колонки ТЗ, содержащую количество и себестоимость // списанного документом товара ПриДокументы = СоздатьОбъект("СписокЗначений"); ЦеныТоваров = СоздатьОбъект("ТаблицаЗначений"); ЦеныТоваров.НоваяКолонка("Товар", "Справочник.Номенклатура"); ЦеныТоваров.НоваяКолонка("Стоимость" , "Число", 19, 5); // формат аналогичен формату // ресурса Стоимость ЦеныТоваров.НоваяКолонка("Количество", "Число", 15, 5); // формат аналогичен формату //******************************************************************************** // расчет цен товаров в документе. Цены расчитываются только // для проведенного документа Если Проведен() = 1 Тогда // ресурса ОстатокТовара Если ТипУчета > Упр Тогда ТекФирма = Фирма; Иначе ТекФирма = глПустаяФирма; КонецЕсли; РегПартии = СоздатьОбъект("Регистр.ПартииТоваров"); РегПартии.ВыбратьДвиженияДокумента(ТекущийДокумент()); // заполняем ТЗ Пока РегПартии.ПолучитьДвижение() = 1 Цикл Если РегПартии.Фирма<>ТекФирма Тогда Продолжить; КонецЕсли; ЦеныТоваров.НоваяСтрока(); ЦеныТоваров.Товар = РегПартии.Товар; ЦеныТоваров.Стоимость = РегПартии.Стоимость + РегПартии.НДС; ЦеныТоваров.Количество = РегПартии.ОстатокТовара; Если ПриДокументы.НайтиЗначение(РегПартии.ПрихДокумент)=0 Тогда ПриДокументы.ДобавитьЗначение(РегПартии.ПрихДокумент); КонецЕсли; КонецЦикла; // сворачиваем ТЗ по товару ЦеныТоваров.Свернуть("Товар", "Стоимость,Количество"); ПриДокументы.Сортировать(0, 1); КонецЕсли; //******************************************************************************** КолвоНаТитСтранице = 24; КолвоНаСтранице = 40; ВысотаПодвала = 13; СтрокНаТекСтранице = 0; ТекСтрокаНаСтр = 1; ТекСтрока = 1; НачалоПовтора = 1; КонецПовтора = 1; ПечФорма = СоздатьОбъект("Таблица"); ПечФорма.ИсходнаяТаблица("ТОРГ16"); // титульный лист ПечФорма.ВывестиСекцию("ШапкаОтчета"); НачалоПовтора = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаОтчета"); ПечФорма.ВывестиСекцию("ШапкаТаб1"); НачалоПовтора = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаТаб1"); // печатаем таблицу титульного листа Для Инд = 1 по ПриДокументы.РазмерСписка() Цикл Если Инд > КолвоНаТитСтранице Тогда Прервать; КонецЕсли; ТекДок = ПриДокументы.ПолучитьЗначение(Инд); ПечФорма.ВывестиСекцию("СтрокаТаб1"); КонецЦикла; // печатаем пустые строки в таблице титульного листа Для Инд2 = Инд по КолвоНаТитСтранице Цикл ПечФорма.ВывестиСекцию("ПустаяСтрокаТаб1"); КонецЦикла; ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб1"); ПечФорма.НоваяСтраница(); ПечФорма.ВывестиСекцию("ШапкаТаб2"); НачалоПовтора = НачалоПовтора + КолвоНаТитСтранице+1; КонецПовтора = НачалоПовтора + ПечФорма.ВысотаСекции("ШапкаТаб2"); ПечФорма.ПовторятьПриПечатиСтроки(НачалоПовтора, КонецПовтора); ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл Если ( ТекСтрока = КоличествоСтрок() ) Тогда // последняя строка СтрокНаТекСтранице = КолвоНаСтранице - ВысотаПодвала; Иначе СтрокНаТекСтранице = КолвоНаСтранице; КонецЕсли; Если ТекСтрокаНаСтр > СтрокНаТекСтранице Тогда // целая страница // печатаем пустые строки Для Инд = ТекСтрокаНаСтр по КолвоНаСтранице Цикл ПечФорма.ВывестиСекцию("ПустаяСтрокаТаб2"); КонецЦикла; ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб2"); // начинаем новую страницу ПечФорма.НоваяСтраница(); ТекСтрокаНаСтр = 1; КонецЕсли; // получим цену товара Поз = 0; Если ЦеныТоваров.НайтиЗначение(Товар, Поз, "Товар") = 1 Тогда ПечЦена = ЦеныТоваров.ПолучитьЗначение(Поз, "Стоимость") / ЦеныТоваров.ПолучитьЗначение(Поз, "Количество"); ПечЦена = глПересчет(ПечЦена, ?(ТипУчета > Упр, Рубли, Товар.ВалютаУчета), ДатаДок, Рубли, ДатаДок); ПечСумма = ПечЦена * Количество; Иначе ПечЦена = 0; ПечСумма = 0; КонецЕсли; ПечСуммаИтого = ПечСуммаИтого + ПечСумма; ПечФорма.ВывестиСекцию("СтрокаТаб2"); // увеличиваем на единицу нумерацию строк ТекСтрокаНаСтр = ТекСтрокаНаСтр + 1; ТекСтрока = ТекСтрока + 1; КонецЦикла; // печатаем пустые строки на последней странице Для Инд = ТекСтрокаНаСтр по СтрокНаТекСтранице Цикл ПечФорма.ВывестиСекцию("ПустаяСтрокаТаб2"); КонецЦикла; // печатаем секцию итого на последней странице ПечФорма.ВывестиСекцию("ПоследняяСтрокаТаб2"); ПечФорма.ВывестиСекцию("ИтогоТаб2"); ПечФорма.ВывестиСекцию("ПодвалТаб2"); ПечФорма.Опции(0, 0, 0, 0, ПарСтрДок); ПечФорма.Защита(Константа.ФлагЗащитыТаблиц); ПечФорма.ТолькоПросмотр(1); ПечФорма.Показать("Печать акта списания ТОРГ-16",""); КонецПроцедуры // ПечатьТОРГ16 //******************************************************************************** // НАЗВАНИЕ: ВыборПечатнойФормы // ПАРАМЕТРЫ: // Нет. // ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: // Нет. // ОПИСАНИЕ: // выводит на экран всплывающее меню, в котором можно выбрать печатную форму. Процедура ВыборПечатнойФормы() Перем СписокФорм, ВыбЗначение; // формируем список СписокФорм = СоздатьОбъект("СписокЗначений"); СписокФорм.ДобавитьЗначение(1, "Акт списания"); СписокФорм.ДобавитьЗначение(2, "ТОРГ-16"); // открываем список ввиде меню Если СписокФорм.ВыбратьЗначение(ВыбЗначение, , , , 1) = 1 Тогда // значение выбрано Если ВыбЗначение = 1 Тогда Печать(); Иначе ПечатьТОРГ16(); КонецЕсли; КонецЕсли; КонецПроцедуры //****************************************************************************** Функция КонтрольОстатка() Перем ТекОстаток; Если (Выбран() = 0) ИЛИ (ДатаДок = ПолучитьДатуТА()) Тогда // если новый или дата равна дате ТА ТекОстаток = глПолучитьОстатокТовара(Товар, Единица, ?(ТипУчета = Фин, Фирма, глПустаяФирма), Склад, 0); Возврат СокрЛ(Формат(ТекОстаток, глФорматКоличестваВформах)) + " " + Единица.ТипЕдиницы; Иначе Возврат ""; КонецЕсли; КонецФункции //***************************************************************************** // Предопределенные процедуры //****************************************************************************** Процедура ВводНового(Скопирован) // предопределенная процедура Если (ПустоеЗначение(ДокументОснование)=1)И(НазваниеНабораПрав()<>"Администратор") Тогда Предупреждение("Без документа основания этот документ может создавать только пользователь с правами ""Администратор""."); СтатусВозврата(0); Возврат; КонецЕсли; глЗаполнитьШапку(Контекст, Скопирован); Если Скопирован = 1 Тогда //копирование документа Возврат; КонецЕсли; ДатаДок = РабочаяДата(); КонецПроцедуры //****************************************************************************** Процедура ВводНаОсновании(ДокОснование) // предопределенная процедура СинонимДокумента = ПредставлениеВида(); СинонимОснования = ДокОснование.ПредставлениеВида(); Список = глПолучитьСписокВводимыхНаОсновании(ДокОснование); Поз = Список.НайтиЗначение(Вид()); Если Поз=0 Тогда СтатусВозврата(0); Предупреждение("Документ """+СинонимДокумента+""" нельзя вводить на основании """+СинонимОснования+""""); Возврат; КонецЕсли; Если НазваниеНабораПрав() <> "Администратор" Тогда Если ДокОснование.Вид() = "ПриходнаяНакладная" Тогда Если ДокОснование.ПризнакНакладной <> Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда Предупреждение("Только пользователь с правами ""Администратор"" может вводить этот документ на основании "+ДокОснование+".",120); СтатусВозврата(0); Возврат; КонецЕсли; ИначеЕсли ДокОснование.Вид() = "Инвентаризация" Тогда Иначе Предупреждение("Только пользователь с правами ""Администратор"" может вводить этот документ на основании "+ДокОснование+".",120); СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; ДатаДок=РабочаяДата(); глЗаполнитьШапкуНаОсн(Контекст,ДокОснование); ПричинаСписания = Перечисление.ПричиныСписанияТовара.Недостача; Автор = глПользователь; Если глЕстьРеквизитШапки("ТипИнвентаризации",ДокОснование.Вид()) = Да Тогда Если ДокОснование.ТипИнвентаризации <> 2 Тогда СтатусВозврата(0); Предупреждение("Документ """+СинонимДокумента+""" можно вводить только на основании """+СинонимОснования+"""с типом инвентаризации <по складу>"); Возврат; КонецЕсли; КонецЕсли; НачальноеЗаполнение("ДокументОснование",Константа.НачальноеЗаполнение); КонецПроцедуры //****************************************************************************** Процедура ПриОткрытии() // предопределенная процедура Парам = Форма.Параметр; Если Лев(Парам, 13) = "ПЕЧАТЬСПРОСМ_" Тогда ВыборПечатнойФормы(); СтатусВозврата(0); Возврат; КонецЕсли; НачальнаяДатаДокумента = ДатаДок; глПроверкаРазрешенияРедактирования(Контекст); глУстановкаРеквизитаТип(Контекст); Тип.ДобавитьЗначение("Упр."); Тип.ДобавитьЗначение("Общ."); Тип.ДобавитьЗначение("Фин."); Тип.ТекущаяСтрока(ТипУчета+1); Если Форма.ТолькоПросмотр()=1 Тогда Форма.КнФирма.Доступность(0); Форма.КнОснование.Доступность(0); Форма.кнПодборПоКаталогу.Доступность(0); Форма.кнИзменитьСостав.Доступность(0); Форма.кнЗаполнитьСостав.Доступность(0); Форма.кнЗаписать.Доступность(0); Форма.кнПровести.Доступность(0); Форма.ОК.Доступность(0); Форма.КнопкаПоУмолчанию("Закрыть"); Иначе Форма.КнопкаПоУмолчанию("ОК"); КонецЕсли; //ПересчетРегистров(); ОбновитьНадписи(); // Формируем информационные строки СтараяДата = ДатаДок; КонецПроцедуры // ПриОткрытии //***************************************************************************** Процедура ОбработкаПодбора(Выб) //Предопределенная процедура глПриОбработкеПодбора(Выб,Контекст); КонецПроцедуры //Обработка подбора //***************************************************************************** Процедура ПриЗаписи() //Предопределенная процедура Если ПустоеЗначение(ПричинаСписанияТМЦ) = 1 Тогда Предупреждение("Не указана причина списания ТМЦ. Документ не записан!",20); СтатусВозврата(0); Возврат; КонецЕсли; Если глМожноЗаписатьДокумент(Контекст)=0 Тогда СтатусВозврата(0); ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда СтатусВозврата(0); Иначе ЗаголовокФормы(); КонецЕсли; КонецПроцедуры // ПриЗаписи() //***************************************************************************** //Инициализирум список действий по кнопке "Действия" СписокДействий = СоздатьОбъект("СписокЗначений"); СписокДействий.ДобавитьЗначение("Структура подчиненности"); СписокДействий.ДобавитьЗначение("Отчет о движениях документа"); СписокДействий.ДобавитьЗначение("Отчет о бухгалтерских проводках"); СписокДействий.ДобавитьЗначение("Открыть в журнале"); ВариантыЗаполнения = СоздатьОбъект("СписокЗначений"); ВариантыЗаполнения.ДобавитьЗначение("ДокументОснование","по документу-основанию"); |
|||
23
GskIvan
04.08.12
✎
16:17
|
вот спсиание, тут вообще нигде количество не считает
|
|||
24
GskIvan
04.08.12
✎
16:18
|
я же писал что не понимаю в этом ничего )) вот сижу гуглю уже 3 час )
|
|||
25
m-serg74
04.08.12
✎
16:19
|
на хрен на хрен 1С угадывать количество должна, конечно в доке ручками кол-во оператор вводит
|
|||
26
m-serg74
04.08.12
✎
16:20
|
чтоб не ипать моск в ячейке где тебе нужно напиши Итог("Количество")
|
|||
27
m-serg74
04.08.12
✎
16:21
|
> я же писал что не понимаю в этом ничего
а почему тогда тебе поручили это занятие? |
|||
28
GskIvan
04.08.12
✎
16:24
|
в отпуске все )) Итог("Количество") работает, считает ))) всё что нужно было )
|
|||
29
m-serg74
04.08.12
✎
16:25
|
удачи
|
|||
30
GskIvan
04.08.12
✎
16:26
|
а в списании не работает ))
|
|||
31
m-serg74
04.08.12
✎
16:26
|
а где ты его в списании пхаешь?
|
|||
32
m-serg74
04.08.12
✎
16:27
|
и вообще списание - это Документ?
|
|||
33
m-serg74
04.08.12
✎
16:29
|
ЦеныТоваров.Итог("Количество") попробуй
|
|||
34
GskIvan
04.08.12
✎
16:30
|
Не там пихал )) а Итого количество это он считает на 1 странице документа, а итог по всему документу написать Всего("Количество")
|
|||
35
m-serg74
04.08.12
✎
16:31
|
нет
|
|||
36
m-serg74
04.08.12
✎
16:33
|
Итог("Количество") это и есть итог по всему документу
|
|||
37
GskIvan
04.08.12
✎
16:35
|
Ладно, достаточно будет )) Спасибо тебе огромное, ты мне часть выходного спас ))) удачи, здоровья и успехов, ещё раз спасибо
|
|||
38
Фдулич
04.08.12
✎
16:35
|
песец , а где специалисты ?
|
|||
39
m-serg74
04.08.12
✎
16:36
|
(38) в (28)
|
|||
40
GskIvan
04.08.12
✎
16:36
|
в отпуске
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |