День добрый!
Возможно ли в отчете (печатная форма) в Расшифровку задать номер закладки для открываемого документа?
Спасибо.
День добрый!
Возможно ли в отчете (печатная форма) в Расшифровку задать номер закладки для открываемого документа?
Спасибо.
Не возражаю
(9)
Процедура ОбработкаЯчейкиТаблицы(<?>,,,)
КонецПроцедуры
Синтаксис:
ОбработкаЯчейкиТаблицы(<Значение>,<ФлагСтандОбраб>,<Таблица>,<Адрес>)
Назначение:
Предопределенная процедура обработки ячейки таблицы (по двойному щелчку мыши или по нажатию клавиши ''Enter'' в табличном документе на выбранной ячейке).
Параметры:
<Значение> - здесь в процедуру передается вычисленное значение ячейки (задается в конфигураторе: ''Свойства'' ячейки, ''Текст'', ''Значение'').
<ФлагСтандОбраб> - флаг обработки ячейки: установка в 1 приведет к выполнению стандартной обработки значения ячейки по завершении процедуры (открытию документа, элемента справочника и т.п.).
<Таблица> - необязательный параметр. Имя переменной, куда система передаст объект типа ''Таблица''. С помощью значения этого контекста можно произвольно манипулировать данной таблицей, пока она открыта. Пока данный объект ''Таблица'' существует, тип значения данного параметра равен 100, если закрыта - 0.
<Адрес> - необязательный параметр. Имя переменной, куда система передаст адрес ячейки/объекта в формате ''R1C1:R2C2''.
Замечание:
Объект типа ''СписокЗначений'' может записываться в поле ''значение'' ячейки таблицы и использоваться затем процедурой ОбработкаЯчейкиТаблицы.
Важно!
Если данная процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля.
Внимание!
Данная предопределенная процедура НЕ вызывается при выборе ячейки таблицы в режиме ввода данных. Для этого случая вызывается предопределенная процедура ПриВыбореЯчейкиТаблицы.
Вроде всё как в (4)
(10) не, ну если рассматривать сферического коня в вакууме (читай: чистую самописку), то тогда ты прав, конечно.
но в реале в типовых есть уже готовый функционал в глобальнике, который просто можно использовать, и не надо при этом курочить сам глобальник.
А я не понимаю...
Ячейка таблицы - Свойства - Расшифровка = ТекДок. В модуле: ТекДок = Запрос.Док.
И где, и как?
(13) Кстати, в книге покупок/продаж нет расшифровок. Я усе посмотрела.
(15) Расшифровка = ТекДок, Закладка -
ТекДок<<?>>, Закладка
Неопознанный оператор
Масянька доставляет... :-)
Млин, ну пиши в расшифровку СЗ, в ОбработкеЯчейкиТаблицы обрабатывай СЗ и выполняй действия по открытию. в ПриОткрытии получай требуемый параметр, и переключайся на нужную закладку.
решетка означает что расшифровка действует на всю строку
переменная "Расшифровка" хранит список значений
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "КнигаПродаж");
// все настройки помещаем в список
Расшифровка.Установить("ДатаНачала", ДатаНачала);
Расшифровка.Установить("ДатаКонца", ДатаКонца);
Расшифровка.Установить("ВыбЮрЛицо", ВыбЮрЛицо);
Расшифровка.Установить("ПоКлиентам", ПоКлиентам);
Расшифровка.Установить("ОтборПоКлиентам", ОтборПоКлиентам);
Расшифровка.Установить("ВыбКонтрагент", ВыбКонтрагент);
Расшифровка.Установить("СписокВидовОтчетов",СписокВидовОтчетов.ТекущаяСтрока());
Чет не получается...
КонецЕсли; КонОст = КонОст + Продажа; Расшифровка.Установить("ТекДок", ДокПодчиненные); Расшифровка.Установить("Закладка", 2); Таб.ВывестиСекцию("Дебет"); КонецЕсли;
А пишет - Значение не представляет агрегатный объект (Выбран).
(23) Блин! Эту колонку и не смотрела... Разве блондинка может додуматься, что Расшифровка в Номере?
(34) И док не открывается.
(34) погоди! Так у тебя при щелчке по ячейке выходит сообщение?
Тогда думаю что ТиС ругается где то в этой функции, там как раз Попытка и Сообщить(ОписаниеОшибки());:
//******************************************************************************
// глОбработкаРасшифровки(Расшифровка, СтандартнаяОбработка, Таблица)
//
// Параметры:
// Расшифровка - список значений - расшифровка отчета
// СтандартнаяОбработка - флаг стандартной обработки
// Таблица - таблица, из которой была вызвана расшифровка
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Производит обработку расшифровки отчетов
//
Процедура глОбработкаРасшифровки(Расшифровка, СтандартнаяОбработка, Таблица) Экспорт
Перем Отчет;
Док = Расшифровка.Получить("Документ");
Меню = Расшифровка.Получить("Меню");
Если ТипЗначенияСтр(Меню) = "СписокЗначений" Тогда
Если Меню.ВыбратьЗначение(Отчет, "",,, 1) = 0 Тогда
Возврат;
КонецЕсли;
Иначе
Отчет = Расшифровка.Получить("Отчет");
КонецЕсли;
глРасшифровка = Расшифровка;
глФлагРасшифровки = 1;
глОбновить = Число(Расшифровка.Получить("Обновить"));
Если глОбновить <> 0 Тогда
глТаблица = Таблица;
КонецЕсли;
Попытка
Если ТипЗначенияСтр(Док) = "Документ" Тогда
ОткрытьФорму(Док);
ИначеЕсли ТипЗначенияСтр(Отчет) = "Документ" Тогда
ОткрытьФорму(Отчет);
ИначеЕсли Метаданные.Отчет(Отчет).Выбран() = 1 Тогда
ОткрытьФорму("Отчет."+Отчет+"#");
ИначеЕсли Метаданные.Обработка(Отчет).Выбран() = 1 Тогда
ОткрытьФорму("Обработка."+Отчет+"#");
ИначеЕсли ФС.СуществуетФайл(Отчет) = 1 Тогда
ОткрытьФорму("Отчет#",, Отчет);
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
глФлагРасшифровки = 0;
глРасшифровка = 0;
глОбновить = 0;
КонецПроцедуры // глОбработкаРасшифровки()
(36) Спасибо.
вообщем ну его нафиг с этим списком значений, делай всё проще:
Процедура ОбработкаЯчейкиТаблицы(Значение,ФлагСтандОбраб,Таблица,Адрес)
Если Значение = "ШиринаНоменклатура" Тогда
ФлагСтандОбраб = 0;
Если ВвестиЧисло(ШиринаНоменклатура,"Ширина столбца",5,0) <> 1 ТОгда
Возврат;
КонецЕсли;
//Область = Таблица.Область(Адрес);
ОбластьНоменклатуры = Таблица.Область(,3,,3);
ОбластьНоменклатуры.ШиринаСтолбца(ШиринаНоменклатура);
Таблица.Показать();
ИначеЕсли Значение = "ЗаполнитьЗаказ" Тогда
Если Вопрос("Создаём документ Заказ Поставщику?",4) = 6 Тогда
ЗаказДокумент = СоздатьОбъект("Документ.ЗаказПоставщику");
ЗаказДокумент.Новый();
// глЗаполнитьШапку(ЗаказДокумент,0);
ЗаказДокумент.Автор = глПользователь;
ЗаказДокумент.Проект = глЗначениеПоУмолчанию("ОсновнойПроект");
ЗаказДокумент.Фирма = глЗначениеПоУмолчанию("ОсновнаяФирма");
Если ПустоеЗначение(ЗаказДокумент.Фирма) = 0 Тогда
// Обычные действия при смене фирмы (надо поменять номер и пареметры налогообложения)
глПриИзмененииФирмы(ЗаказДокумент);
КонецЕсли;
//ЗаказДокумент.Склад = глЗначениеПоУмолчанию("ОсновнойСклад");
ЗаказДокумент.Контрагент = глЗначениеПоУмолчанию("ОсновнойПоставщик");
Если (ПустоеЗначение(ЗаказДокумент.Договор) = 1) И (ПустоеЗначение(ЗаказДокумент.Контрагент) = 0) Тогда
ЗаказДокумент.Договор = ЗаказДокумент.Контрагент.ОсновнойДоговор;
// заполним реквизиты по документу в соответствии с договором
глПриИзмененииДоговора(ЗаказДокумент);
КонецЕсли;
ЗаказДокумент.Валюта = глРубли;
ЗаказДокумент.Курс = глКурсДляВалюты(глРубли,ЗаказДокумент.ДатаДок);
Если ПустоеЗначение(ЗаказДокумент.ДатаОплаты) = 1 Тогда
// Значит не выбран договор, ставим дату оплаты текущую
ЗаказДокумент.ДатаОплаты = ЗаказДокумент.ДатаДок;
КонецЕсли;
Если ПустоеЗначение(ЗаказДокумент.ДатаОтгрузки) = 1 Тогда
ЗаказДокумент.ДатаОтгрузки = ЗаказДокумент.ДатаДок;
КонецЕсли;
ЗаказДокумент.ТипЦен = глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
Если ПустоеЗначение(ЗаказДокумент.ТипЦен) = 0 Тогда
// Если цены выбранного типа расчетные, то флаги включения налогов надо брать из базовой цены
Если ПустоеЗначение(ЗаказДокумент.ТипЦен.Рассчитывается) = 0 Тогда
ТипЦен = ЗаказДокумент.ТипЦен.БазовыйТипЦен;
КонецЕсли;
ЗаказДокумент.СуммаВклНДС = ЗаказДокумент.ТипЦен.ЦенаВклНДС;
Если ЗаказДокумент.УчитыватьНП = 1 Тогда
ЗаказДокумент.СуммаВклНП = ЗаказДокумент.ТипЦен.ЦенаВклНП;
КонецЕсли;
Иначе
ЗаказДокумент.СуммаВклНП = ЗаказДокумент.УчитыватьНП;
ЗаказДокумент.СуммаВклНДС = ЗаказДокумент.УчитыватьНДС;
КонецЕсли;
ТекСтрока = 6;
СпрНоменклатуры = СоздатьОбъект("Справочник.Номенклатура");
Пока 1=1 Цикл
ТекСтрока = ТекСтрока + 1;
ОбластьЗаказ = Таблица.Область(ТекСтрока,4,ТекСтрока,4);
Если (ОбластьЗаказ.Текст = "Номенклатура") или (ОбластьЗаказ.Текст = "Остатки и Продажи") или (ОбластьЗаказ.Текст = "Цены") Тогда
Прервать;
КонецЕсли;
ТекЗаказ = Число(ОбластьЗаказ.Текст);
Если ТекЗаказ > 0 Тогда
ТекНоменклатура = Таблица.Область(ТекСтрока,1,ТекСтрока,1);
ТекНоменклатураКод = ТекНоменклатура.Текст;
Если СпрНоменклатуры.НайтиПоКоду(ТекНоменклатураКод) = 1 Тогда
ТекНоменклатура = СпрНоменклатуры.ТекущийЭлемент();
// Сообщить("ТекНоменклатура ="+СокрЛП(ТекНоменклатура)+" ТекЗаказ = "+ТекЗаказ);
//ЗаказДокумент.Записать();
ЗаказДокумент.НоваяСтрока();
ЗаказДокумент.Номенклатура = ТекНоменклатура;
ЗаказДокумент.Количество = ТекЗаказ;
ЗаказДокумент.Единица = ТекНоменклатура.ОсновнаяЕдиница;
ЗаказДокумент.Коэффициент = ТекНоменклатура.ОсновнаяЕдиница.Коэффициент;
ЗаказДокумент.Цена = 0;
ЗаказДокумент.Сумма = 0;
ЗаказДокумент.СтавкаНДС = Перечисление.СтавкиНДС.БезНДС;
ЗаказДокумент.СуммаНДС = 0;
ЗаказДокумент.СтавкаНП = "";
ЗаказДокумент.СуммаНП = 0;
ЗаказДокумент.ПоЗаявке = 0;
Иначе
Сообщить("Не смогли найти Номенклатуру по коду = "+СокрЛП(ТекНоменклатураКод));
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ЗаказДокумент.КоличествоСтрок() > 0 Тогда
ЗаказДокумент.Записать();
ОткрытьФорму(ЗаказДокумент.ТекущийДокумент());
Иначе
Предупреждение("Не нашли в отчете позиций для Заказа");
КонецЕсли;
КонецЕсли;
ИначеЕсли Значение = "ШиринаЦены" Тогда
ФлагСтандОбраб = 0;
Если ВвестиЧисло(ШиринаЦены,"Ширина столбца",5,0) <> 1 ТОгда
Возврат;
КонецЕсли;
Область = Таблица.Область(Адрес);
//ОбластьЦены = Таблица.Область(,3,,23);
//ОбластьЦены.ШиринаСтолбца(ШиринаЦены);
Если НеВыводитьПотребности = 1 Тогда
ОбластьЦены = Таблица.Область(,4,,19);
ОбластьЦены.ШиринаСтолбца(ШиринаЦены);
//ОбластьОстатки = Таб.Область(,19,,47);
//ОбластьОстатки.ШиринаСтолбца(ШиринаОстатки);
Иначе
ОбластьЦены = Таблица.Область(,4,,24);
ОбластьЦены.ШиринаСтолбца(ШиринаЦены);
//ОбластьОстатки = Таб.Область(,24,,47);
//ОбластьОстатки.ШиринаСтолбца(ШиринаОстатки);
КонецЕсли;
Таблица.Показать();
ИначеЕсли Значение = "ШиринаОстатки" ТОгда
ФлагСтандОбраб = 0;
Если ВвестиЧисло(ШиринаОстатки,"Ширина столбца",5,0) <> 1 ТОгда
Возврат;
КонецЕсли;
Область = Таблица.Область(Адрес);
//ОбластьОстатки = Таблица.Область(,24,,47);
//ОбластьОстатки.ШиринаСтолбца(ШиринаОстатки);
Если НеВыводитьПотребности = 1 Тогда
//ОбластьЦены = Таб.Область(,3,,18);
//ОбластьЦены.ШиринаСтолбца(ШиринаЦены);
ОбластьОстатки = Таблица.Область(,20,,48);
ОбластьОстатки.ШиринаСтолбца(ШиринаОстатки);
Иначе
//ОбластьЦены = Таб.Область(,3,,23);
//ОбластьЦены.ШиринаСтолбца(ШиринаЦены);
ОбластьОстатки = Таблица.Область(,25,,48);
ОбластьОстатки.ШиринаСтолбца(ШиринаОстатки);
КонецЕсли;
Таблица.Показать();
ИначеЕсли Значение = "Заказ" ТОгда
Область = Таблица.Область(Адрес);
СтрокаАдреса = СокрЛП(Адрес);
НомерПоз = Найти(СтрокаАдреса,"C");
НомерСтроки = Сред(СтрокаАдреса,2,НомерПоз-2);
НомерСтроки = Число(НомерСтроки);
Если НомерСтроки>6 Тогда
ФлагСтандОбраб = 0;
НоваяЦена = 0;
НоваяЦена = Число(Область.Текст);
Если ВвестиЧисло(НоваяЦена,"Количество заказ",15,2) = 1 ТОгда
Область.Текст = НоваяЦена;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗначения(Значение) = 11 ТОгда
Если Значение.Вид() = "ТипыЦен" Тогда
Если ПустоеЗначение(Значение) = 1 Тогда
Предупреждение("В настройках не задан тип цен для этой колонки!");
Возврат;
КонецЕсли;
Область = Таблица.Область(Адрес);
СтрокаАдреса = СокрЛП(Адрес);
НомерПоз = Найти(СтрокаАдреса,"C");
НомерСтроки = Сред(СтрокаАдреса,2,НомерПоз-2);
НомерСтроки = Число(НомерСтроки);
//СтрокаАдреса = Лев(СтрокаАдреса,НомерПоз)+"2";
//ОбластьНоменклатуры = Таблица.Область(СтрокаАдреса);
Если НомерСтроки>6 Тогда
ФлагСтандОбраб = 0;
ВыбНоменклатура = ТаблицаНоменкалутры.ПолучитьЗначение(НомерСтроки-6,"Номенклатура");
////новый элемент
//ПараметрыФормы = Номенклатура;
//ОткрытьФорму("Справочник.Цены",ПараметрыФормы,,0,Номенклатура);
СпрЦен = СоздатьОбъект("Справочник.Цены");
СпрЦен.ИспользоватьВладельца(ВыбНоменклатура);
СпрЦен.ВыбратьЭлементы();
Пока СпрЦен.ПолучитьЭлемент() = 1 Цикл
НашлиЦену = 0;
Если СпрЦен.ТипЦен = Значение Тогда
СпрЦенТек = СпрЦен.ТекущийЭлемент();
ОткрытьФорму(СпрЦенТек);
Возврат;
КонецЕсли;
КонецЦикла;
Если НашлиЦену = 0 Тогда
НоваяЦена = 0;
Если ВвестиЧисло(НоваяЦена,"Новая цена "+СокрЛП(Значение),15,2) <> 1 ТОгда
Возврат;
КонецЕсли;
СпрЦен.Новый();
СпрЦен.Валюта = глРубли;
СпрЦен.Процент = Значение.Процент;
СпрЦен.ТипЦен = Значение;
СпрЦен.Записать();
СпрЦен.Цена.Установить(ТекущаяДата(),НоваяЦена);
СпрЦен.Единица.Установить(ТекущаяДата(),ВыбНоменклатура.ОсновнаяЕдиница);
СпрЦен.Записать();
СпрЦенТек = СпрЦен.ТекущийЭлемент();
Область = Таблица.Область(Адрес);
Область.Текст = НоваяЦена;
//ОткрытьФорму(СпрЦенТек);
Возврат;
КонецЕсли;
Иначе
ФлагСтандОбраб = 1;
КонецЕсли;
ИначеЕсли Значение.Вид() = "Цены" Тогда
Если ПустоеЗначение(Значение) = 1 Тогда
Предупреждение("Цена не задана");
Возврат;
КонецЕсли;
//КонтекстФормы = "";
//ОткрытьФорму(Значение,КонтекстФормы);
//РЕШИЛИ СО СЛАВОЙ что здесь открывать форму "Ввести новую цену"
НоваяЦена = 0;
Если ВвестиЧисло(НоваяЦена,"Новая цена "+СокрЛП(Значение),15,2) <> 1 ТОгда
Возврат;
КонецЕсли;
СпрЦен = СоздатьОбъект("Справочник.Цены");
СпрЦен.НайтиЭлемент(Значение);
СпрЦен.Цена.Установить(ТекущаяДата(),НоваяЦена);
Область = Таблица.Область(Адрес);
Область.Текст = НоваяЦена;
Иначе
ФлагСтандОбраб = 1;
КонецЕсли;
Иначе
ФлагСтандОбраб = 1;
КонецЕсли;
КонецПроцедуры // СдвинутьНоменклатуру()
(40) Открывается документ.
Вот мне всегда было (и есть) интересно: если нечего сказать по теме - какого хрена лезть и обсирать автора? Повышается самосознание?
(46) "Не говори, что мне делать - и я не скажу тебе, куда идти"©
(48) Если комплимент искусно вуалируют под издевку...
Напоминает начальную школу: когда девочка нравится мальчику, он бьет ее портфелем. И только спустя 5-6 лет, к классу 10, до мальчика доходит, что нужно не бить портфелем, а нести портфель. Тогда есть шанс, что девочка ответит взаимностью.
Не зря говорят, что мальчики (в большинстве) отстают в развитии от девочек. Слава Богу, мне чаще попадаются исключения. [smile=^_^]
Спасибо еще раз.
(51) Ну куда уж тебе - "объяснять". пока ты только научилась задавать вопросы (да и то - некачественно). так что - пытайся догнать в развитии. Не факт, что догонишь, но хотя бы согреешься.
(53) Ну вот видишь, уже начала пытаться догонять - повторяешь мои слова :-)
А насчет щей - это еще неизвестно, кто кого научит :-) У меня ко всем рабочим специальностям еще и диплом повора-кулинара валяется. Не совсем "правильно" полученный (без обучения), зато честно сданный. И готовить приходилось на почти 800 рыл. так что - поучить могу. только ты сначала научись учиться.
(55) а то! Серьезных тем для обсуждения нет - вот и остается флудить понемногу
(56) У меня можно много чему научиться. :-) Особенно тебе...
а 800 рыл были очень даже довольны моей готовкой - ибо все положенные продукты были положены в котел, а не смизджены, и отходов оказывалось в 4 раза меньше, чем при поварах из кафе Старт.
(57) на тебя мизда - наложила. и не только "отпечаток". Можно даже сказать - навалила....
(60) Легче стало?
Вот в чем-чем, а в каплях ты лучше меня разбираешься. Это - признаю.