Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 616
от 01.10.2007, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 409, Экспертов: 61
В номере:Вопросов: 9, Ответов: 29


Вопрос № 103320: Добрый день! Каким образом можно обратиться к процедурам модуля формы документа из внешнего отчета? Мне нужно из отчета открыть некий документ, добавить в него новую строку и записать его, при этом должна выполниться предопределеная процедура ПриЗапи...
Вопрос № 103327: V7.7 У меня есть несколько ДБФ файлов и один справочник, в ДБФ-ках есть одинаковые кода (например один и тотже чел стоит по нескольким очередям в разных группах или под одним номером стоят разные челы в разных группах) надо сделать сравнение по к...
Вопрос № 103330: Здравствуйте! Скажите мне пожалуйста, почему этот запрос мне выводит не количество документов, поступлений ТМЦ от контрагента, а количество позиций - строк всех документов за этот период? Процедура Сформировать() Запрос=СоздатьОбъект(&qu...
Вопрос № 103337: Добрый день! Подскажите пожайлуста можно-ли в процедуре документов ПриЗаписи отслеживать интерактивно запись или нет? 1с 8.0 Задача Призаписи записывать реквизит "редактор" равный глТекущийПользователь, но в то же время если...
Вопрос № 103342: Можно ли в семерке в форму элемента справочника вставить таблицу. Или сделать элемент ТаблицаЗначений многострочным?...
Вопрос № 103349: Добрый день! 1С 7.7 ТиС переписанная. Ситуация такая: Есть регистр остатков Покупатели, в нем измерение КредДокумент типа Документ. Документы в этом измерении бывают разные, у некоторых из них есть реквизит ПунктРазгрузки типа Справочник.ПунктыРа...
Вопрос № 103354: Как перенести данные (или полностью конфигурацию) из 1С:Предприятие 7.7 в 1С:Предприятие версии 8.0??? Может и некорректная формулировка... Вобщем, перейти от 1С:Предприятие 7.7 к 1С:Предприятие 8.0......
Вопрос № 103431: Здравствуй эксперты, как всегда вопрос: 1 Есть бухгалтерия 77 рел 490 возможно ли добавить счет 002.1 в документ инвентаризация ТМЦ если возможно то как? Заранее спасибо...
Вопрос № 103433: Спасибо за ответ... Но не могли бы вы по-подробнее описать эту процедуру: откуда и как запустить этот конвертор и т.д... Заранее спасибо......

Вопрос № 103.320
Добрый день! Каким образом можно обратиться к процедурам модуля формы документа из внешнего отчета? Мне нужно из отчета открыть некий документ, добавить в него новую строку и записать его, при этом должна выполниться предопределеная процедура ПриЗаписи().
Отправлен: 25.09.2007, 12:39
Вопрос задала: Полина Аркадьевна (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Elric
Здравствуйте, Полина Аркадьевна!

Из внешнего модуля к внутренней процедуре формы обратиться нельзя. Даже если поставить ей признак Экспорт, все равно она будет действовать уже вне Контекста.
Так что в Вашей обработке придется продублировать действия процедуры ПриЗаписи().
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 25.09.2007, 13:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Очень жаль...

Отвечает: Дмитрий Васильевич
Здравствуйте, Полина Аркадьевна!
Стандарных средств нет, но можно использовать внешнюю компоненту FormEx.
Ответ отправил: Дмитрий Васильевич (статус: 1-ый класс)
Ответ отправлен: 25.09.2007, 13:12

Отвечает: Dmitry Stashenko
Здравствуйте, Полина Аркадьевна!

Как вариант, можно использовать ОткрытьФорму(), передавать в форму документа какой-нибудь параметр (доступный в открытой форме как Форма.Параметр), отслеживать в порцедуре ПриОкрытии() документа наличие этого параметра, и если присутствует, то СтатусВозврата(0), добавляем строку и Записать().

Если что-то не понятно, пишите. Удачи
Ответ отправил: Dmitry Stashenko (статус: 10-ый класс)
Ответ отправлен: 25.09.2007, 14:23


Вопрос № 103.327
V7.7
У меня есть несколько ДБФ файлов и один справочник, в ДБФ-ках есть одинаковые кода (например один и тотже чел стоит по нескольким очередям в разных группах или под одним номером стоят разные челы в разных группах) надо сделать сравнение по коду и по реквизиту(наименование) если и там и там одинаково то выполняется условие, если разные то например новый по коду, или новый по коду+префикс(если кода совпадают, а наименования разные)

Процедура Сформировать()
ф=СоздатьОбъект("Справочник.ОбщаяОчередь");
Фаил=СоздатьОбъект("XBASE");
Фаил.ОткрытьФайл("Mnogod.dbf");
Фаил.КодоваяСтраница(1);
Если Фаил.Открыта()=0 Тогда
Сообщить("Фаил не открывается");
КонецЕсли;
Фаил.Первая();
н=0;
ф.ВыбратьЭлементы();
Пока Фаил.Следующая()=1 Цикл
Н=Н+1;
Если ф.НайтиПоКоду(Фаил.TAB,0) = 1 Тогда
Если ф.Очередь1.Выбран() = 1 Тогда
ф.ДатаРешение2=Фаил.POS;
ф.Снятие2=Фаил.SNT;
ф.ПричСн2=Фаил.PRSNT;
ф.Снят2=Фаил.PRIZ;
ф.Очередь2=Перечисление.Очередь.МногдетныеСемьи;
Иначе
ф.ДатаРешение1=Фаил.POS;
ф.Снятие1=Фаил.SNT;
ф.ПричСн1=Фаил.PRSNT;
ф.Снят1=Фаил.PRIZ;
ф.Очередь1=Перечисление.Очередь.МногдетныеСемьи;
КонецЕсли;
Сообщить(СокрЛП(Н)+"-----"+СокрЛП(Фаил.TAB)+"-"+СокрЛП(Фаил.FAM)+"="+СокрЛП(ф.Наименование));
Иначе
ф.Новый();
Н=Н+1;
ц=ц+1;
ф.Код=Фаил.TAB;
ф.Наименование=Фаил.FAM;
ф.Имя=Фаил.IM;
ф.Отчество=Фаил.OT;
ф.ГдеРаб=Фаил.RAB;
ф.СоставСемьи=Фаил.SEM;
ф.Адрес=Фаил.ADR;
ф.ДатаРешение=Фаил.POS;
ф.Снятие=Фаил.SNT;
ф.ПричСн=Фаил.PRSNT;
ф.Снят=Фаил.PRIZ;
ф.Очередь=Перечисление.Очередь.МногдетныеСемьи;
Сообщить("Новый-"+СокрЛП(ц)+"******"+СокрЛП(Н)+"-----"+СокрЛП(Фаил.TAB)+"-"+СокрЛП(Фаил.FAM)+"="+СокрЛП(ф.Наименование));
КонецЕсли;
Сообщить(Н);
ф.Записать();
КонецЦикла;
Сообщить("КОНЁЦ!!!"+"Mnogod");
Фаил.ЗакрытьФайл();
КонецПроцедуры

что здесь не так, и как с этим бороться....
сенк!!!
Отправлен: 25.09.2007, 13:17
Вопрос задал: Axim (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Elric
Здравствуйте, Axim!

Вообще обработка написана правильно. Единственное что, у Вас кроме кода дополнительным критерием сравнения выступает не Наименование, а реквизит Очередь1 (выбран ли). Никаких добавлений префиксов кода, зависящих от несовпадений наименований, у Вас нет.

Обратите внимание на строчку Если ф.Очередь1.Выбран() = 1 Тогда -- там задан Ваш второй критерий проверки (вместо Наименования). В остальном все правильно...
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 25.09.2007, 13:33
Оценка за ответ: 5
Комментарий оценки:
второй критерий

Отвечает: Angeliccare
Здравствуйте, Axim.

Обратите внимание на то, что в случае если повторений более чем 2 - обработка "затирает" уже стоящего в очереди на 2-м месте.

Отсутствует условие:
Если (СокрЛП(ф.Наименование) = СокрЛП(Фаил.FAM)) И (СокрЛП(ф.Имя) = СокрЛП(Фаил.IM)) И (СокрЛП(ф.Отчество) = СокрЛП(Фаил.OT)) Тогда
Если ф.Очередь1.Выбран() = 1 Тогда
...
КонецЕсли;
Иначе
ф.Новый();
...

Или более подходящее для вашей задачи.
Ответ отправил: Angeliccare (статус: 1-ый класс)
Ответ отправлен: 25.09.2007, 14:18
Оценка за ответ: 5
Комментарий оценки:
Если (СокрЛП(ф.Наименование) = СокрЛП(Фаил.FAM)) И (СокрЛП(ф.Имя) = СокрЛП(Фаил.IM)) И (СокрЛП(ф.Отчество) = СокрЛП(Фаил.OT)) Тогда Если ф.Очередь1.Выбран() = 1 Тогда

Отвечает: Dmitry Stashenko
Здравствуйте, Axim!

Ну так что именно не так? Что не работает? Не находит элемент справочника, даже если он есть? Тогда ф.НайтиПоКоду(СокрЛП(Фаил.TAB),0). И ф.ВыбратьЭлементы() до этого вообще зачем? Напиши подробнее, плиз.
Ответ отправил: Dmitry Stashenko (статус: 10-ый класс)
Ответ отправлен: 25.09.2007, 15:07
Оценка за ответ: 5
Комментарий оценки:
ф.НайтиПоКоду(СокрЛП(Фаил.TAB),0)


Вопрос № 103.330
Здравствуйте!
Скажите мне пожалуйста, почему этот запрос мне выводит не количество документов, поступлений ТМЦ от контрагента, а количество позиций - строк всех документов за этот период?
Процедура Сформировать()
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=1 Тогда
Запрос.Выгрузить(ТабЗнач);
// Выгружаем результат запроса в таблицу значений
КонецЕсли;
КонецПроцедуры

Текс запроса:

Период С НДт По КДт;
ВремКонтрагент = Документ.ПоступлениеТМЦ.Контрагент;
//СуммаПоступления = Документ.ПоступлениеТМЦ.Сумма;
КурсПоступления = Документ.ПоступлениеТМЦ.Валюта.Курс;
Группировка ВремКонтрагент Без Групп;
Условие (ВремКонтрагент в Контрагент);
//Функция ОбщаяСумма = Сумма(СуммаПоступления*КурсПоступления);
Функция КоличествоДоговоров = Счётчик();
Отправлен: 25.09.2007, 13:52
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Elric
Здравствуйте, _Alexey_!

У Вас выводится не количество строк, а количество Контрагентов. Впрочем, эти цифры могут совпадать.
Чтобы Вы увидели количество договоров, Вам нужно в Запрос добавить Группировку ТекущийДокумент.
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 25.09.2007, 14:18
Оценка за ответ: 5

Отвечает: vcv
Здравствуйте, _Alexey_!
Функция Счетчик() в запросе будет считать количество строк, а не документов, если хотя бы одна из переменных запроса - реквизит табличной части.
Ваш запрос в том виде, в котором он приведен в вопросе, на типовой торговле работает нормально. А вот если убрать комментарий в строке "СуммаПоступления = Документ.ПоступлениеТМЦ.Сумма;" - тогда Счетчик начинает считать строки документа. Потому что Сумма - реквизит табличной части документа ПоступлениеТМЦ.
Ответ отправил: vcv (статус: 5-ый класс)
Ответ отправлен: 25.09.2007, 21:13
Оценка за ответ: 5
Комментарий оценки:
Теперь понятно, спсибо за развернутый ответ!


Вопрос № 103.337
Добрый день!
Подскажите пожайлуста можно-ли в процедуре документов ПриЗаписи
отслеживать интерактивно запись или нет?
1с 8.0
Задача Призаписи записывать реквизит "редактор" равный глТекущийПользователь, но в то же время если я буду проводить документы за весь месяц этого происходить не должно!
Отправлен: 25.09.2007, 14:26
Вопрос задал: Snik_666 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Яна
Здравствуйте, Snik_666!
В процедуре ПередЗаписью можно проверить был ли документ изменен с помощью метода Модифицированность. См. описание ниже.
Кроме того, у этой процедуры есть возможность анализировать режим записи и режим проведения, хотя вряд ли это поможет для решения данной задачи.

ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Модифицированность (Modified)
Синтаксис:
Модифицированность()
Возвращаемое значение:
Тип: Булево. Истина - объект изменен; Ложь - в противном случае.
Описание:
Определяет, был ли изменен объект после считывания из базы данных.
Примечание:
Метод не позволяет определить, был ли изменен объект другими пользователями.
Пример:
Если РасходнаяНакладная.Модифицированность() Тогда
Предупреждение("Документ был изменен.");
КонецЕсли;
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 25.09.2007, 17:01

Отвечает: Полозов Олег aka Asher
Здравствуйте, Snik_666!

Я бы переписал процедуры обработки кнопки Записать и Ок на форме таким образом, чтобы при нажатии на них выполнялись не стандартные функции ПриЗаписи и ПриПроведении, а те действия, которые мне нужны. тогда интерактивное проведение документов, например посредством групповой обработки документов или по кнопке из меню документов будет проходить стандартно, а при нажатии на ОК или Записать будет обрабатываться по прописанным процедурам. Как пример, можно посмотреть документ ЧекККМ из УПП 8.0, кнопка ОК. При проведении по этой кнопке идут проверки привязки к ККМ и т.п. а по кнопке проведения (меню под шапкой формы) отрабатывает стандартная процедура при ПроВедении()
Ответ отправил: Полозов Олег aka Asher (статус: 10-ый класс)
Ответ отправлен: 26.09.2007, 02:33


Вопрос № 103.342
Можно ли в семерке в форму элемента справочника вставить таблицу. Или сделать элемент ТаблицаЗначений многострочным?
Отправлен: 25.09.2007, 15:17
Вопрос задал: Дмитрий Васильевич (статус: 1-ый класс)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 18)

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Дмитрий Васильевич!

Можно!
Когда открыта форма списка справочника жмете Вставить -> ТаблицаЗначений
Задаете ей какой-то идентификатор и в модуле работаете с этим идентификатором, как с объявленной переменной таблицы значений (добавляете колонки, строки, задаете ширину колонок и т.п.)
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 10-ый класс)
Ответ отправлен: 25.09.2007, 15:34
Оценка за ответ: 3
Комментарий оценки:
Нужно не таблицузначений, а таблицу. Или многострочная таблица значений, т.е. каждая строка многострочна. Штатными средствами никак не делается.

Отвечает: Татьяна Ласовская
Здравствуйте, Дмитрий Васильевич!
Хочу дополнить предыдущий ответ - пример реализации можно посмотреть в справочнике Номенклатура типовой 1С Торговля и склад.
Ответ отправила: Татьяна Ласовская (статус: 9-ый класс)
Ответ отправлен: 25.09.2007, 15:47
Оценка за ответ: 3
Комментарий оценки:
тож что и вверху

Отвечает: BigHard
Здравствуйте, Дмитрий Васильевич!
Конечно можно. Разместите ее в необходимом месте, работать с колонками можно с помощью методов добавитьколонку(),удалитьколонку(),
работать со строками можно методами Добавитьстроку(), Удалитьстроку(). В приложении реально работающий пример работы с таблицей значений

Приложение:

---------
Чем отличается чайник от программиста: У чайника в одном килобайте 1000 байт, а у программиста в одном километре 1024 метра

Ответ отправил: BigHard (статус: Студент)
Ответ отправлен: 25.09.2007, 16:32
Оценка за ответ: 3
Комментарий оценки:
тож

Отвечает: Dmitry Stashenko
Здравствуйте, Дмитрий Васильевич!

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

Удачи
Ответ отправил: Dmitry Stashenko (статус: 10-ый класс)
Ответ отправлен: 25.09.2007, 16:39
Оценка за ответ: 3
Комментарий оценки:
не реквизит, а элемент формы.

Отвечает: Яна
Здравствуйте, Дмитрий Васильевич!
Можно вставить ТаблицуЗначений и сделать соответствующий ей реквизит типа строка неограниченной длины, куда все это сохранять. В 7.7 Табличной части у справочника быть не может, эта возможность появилась только в 8.0.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 25.09.2007, 16:54
Оценка за ответ: 3
Комментарий оценки:
Я знаю что нельзя сделать стандартными средствами вот и спрашиваю - как сделать не стандартными. Сейчас сделано через реквизит текст но неудобно позиционировать, приходиться использовать внешнюю компоненту FormEx и отслеживать координаты указателя мыши. ТЗ и строка неграниченной длины при выводе обрезает текст до видимого размера ТЗ.

Отвечает: Владимир (1С)
Здравствуйте, Дмитрий Васильевич!

Как я понял из Ваших комменариев ответов, Вам необходимо, чтобы из строки таблицы выпадал еще список значений. Эдакий двумерный массив.

Это просто. Создаёте подчинённый справочник или документ, который и будет
выступать хранилищем для каждой конкретной строки. Потом при активации строки таблицы мышью, читаете связанный с этим элементом справочник/документ и заполняете список значений. Потом выводите этот список.

A формулу таблицы поместите процедуру, у меня она называется ПриДвойномЩелчкеНаТаблице(), имя таблицы ТовСостав.

В приложении код того, что я описал. Я не стал изобретать новые документы/справочники, а использовал список документов. При щелчке на названии документа открывается выпадающий список состоящий из его табличной части.
Вместо списка можно использовать ТаблицуЗначений и её метод ВыбратьСтроку() - тогда на экране появится таблица во всей красе и можете выбрать нужную строку.

Готовая обработка "Список журнала с флажками 103342.zip" находится по адресу http://ifolder.ru/3483851, размер: 8.62 кб. Доступен до: 2007-10-25 19:41:36

С уважением, Владимир.

Приложение:

Ответ отправил: Владимир (1С) (статус: 4-ый класс)
Ответ отправлен: 25.09.2007, 19:50

Отвечает: Axim
Здравствуйте, Дмитрий Васильевич!
в топовой конфигурации есть в спр. номенклатура вкладка таблица цен, на край можно ее использовать и будет многострочной. Твоя задача сделать ТЗ с назв.-"ТаблицаЦен".

Перем ТабЦен;

//*******************************
//
Процедура ЗаполнитьТаблицуЦен()
ТабЦен = СоздатьОбъект("ТаблицаЗначений");
ТабЦен.Очистить();
ТабЦен.НоваяКолонка("Элемент");
ТабЦен.НоваяКолонка("Удален",,,," ");
ТабЦен.НоваяКолонка("ТипЦен",,,,"Тип цены");
ТабЦен.НоваяКолонка("Цена");
ТабЦен.НоваяКолонка("Валюта",,,,"Валюта");
ТабЦен.НоваяКолонка("ПослИзменение",,,,"Установлена",,,);

ДатаЦен = ИспользоватьДату();
СпрЦены = СоздатьОбъект("Справочник.Цены");
ПериодЦена = СоздатьОбъект("Периодический");
СпрЦены.ИспользоватьВладельца(ТекущийЭлемент());
СпрЦены.ИспользоватьДату(ДатаЦен);
СпрЦены.ВыбратьЭлементы();
Пока СпрЦены.ПолучитьЭлемент() = 1 Цикл
Если СпрЦены.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
ТабЦен.НоваяСтрока();
ТабЦен.Элемент = СпрЦены.ТекущийЭлемент();
ТабЦен.Удален = ?(СпрЦены.ТекущийЭлемент().ПометкаУдаления() = 1,12,14);
ТабЦен.ТипЦен = СпрЦены.ТипЦен;
ТабЦен.Цена = СпрЦены.Цена;
ТабЦен.Валюта = ?(ПустоеЗначение(СпрЦены.Валюта) = 1,"руб.",СпрЦены.Валюта);
ПериодЦена.ИспользоватьОбъект("Цена",СпрЦены.ТекущийЭлемент());
ПериодЦена.НайтиЗначение(ДатаЦен,-1);
ТабЦен.ПослИзменение = ПериодЦена.ДатаЗнач;
КонецЦикла;
ТабЦен.Выгрузить(ТаблицаЦен);
ТаблицаЦен.ВидимостьКолонки("Элемент",0);
ТаблицаЦен.ВыводитьПиктограммы("Удален");
ТаблицаЦен.УстановитьПараметрыКолонки("Удален",,,,,3,,);
ТаблицаЦен.УстановитьПараметрыКолонки("ТипЦен",,,,,25,,);
ТаблицаЦен.УстановитьПараметрыКолонки("Цена",,,,,15,"Ч17.2,.",2);
ТаблицаЦен.УстановитьПараметрыКолонки("Валюта",,,,,15,,);
ТаблицаЦен.УстановитьПараметрыКолонки("ПослИзменение",,,,,15,,2);
ТаблицаЦен.ТекущаяСтрока(1);
КонецПроцедуры

//*******************************
//
Процедура ОбработкаТаблицыЦен()
Если ТаблицаЦен.ТекущаяСтрока()>0 Тогда
Если Выбран() = 0 Тогда
Если Вопрос("Цены можно редактировать
|только после записи номенклатуры.
|Записать номенклатуру?", "Да+Нет") = "Да" Тогда
Записать();
КонецЕсли;
КонецЕсли;
Если Выбран() = 0 Тогда
Возврат;
КонецЕсли;
ОткрытьФормуМодально(ТаблицаЦен.Элемент,ИспользоватьДату());
ЗаполнитьТаблицуЦен();
КонецЕсли;
КонецПроцедуры

//*******************************
// ОткрытьСправичникЦены()
//
// Параметры:
//
// Возвращаемое значение:
// Нет.
Процедура ОткрытьСправичникЦены()
Если Выбран() = 0 Тогда
Если Вопрос("Перейти в справочник ""Цены""
|только после записи номенклатуры.
|Записать номенклатуру?", "Да+Нет") = "Да" Тогда
Записать();
КонецЕсли;
КонецЕсли;
Если Выбран() = 0 Тогда
Возврат;
КонецЕсли;
ОткрытьФормуМодально("Справочник.Цены.ФормаСписка",ТекущийЭлемент());
ЗаполнитьТаблицуЦен();
КонецПроцедуры

//*******************************
// ДобавитьЦену()
//
// Параметры:
//
// Возвращаемое значение:
// Нет.
Процедура ДобавитьЦену()
Если Выбран() = 0 Тогда
Если Вопрос("Добавление цены возможно
|только после записи номенклатуры.
|Записать номенклатуру?", "Да+Нет") = "Да" Тогда
Записать();
КонецЕсли;
КонецЕсли;
Если Выбран() = 0 Тогда
Возврат;
КонецЕсли;
ОткрытьФормуМодально("Элемент.Цены",ИспользоватьДату(),,0,ТекущийЭлемент());
ЗаполнитьТаблицуЦен();
КонецПроцедуры

//*******************************
// ИзменитьЦену()
//
// Параметры:
//
// Возвращаемое значение:
// Нет.
Процедура ИзменитьЦену()
Если ТаблицаЦен.ТекущаяСтрока()>0 Тогда
Если Выбран() = 0 Тогда
Если Вопрос("Цены можно редактировать
|только после записи номенклатуры.
|Записать номенклатуру?", "Да+Нет") = "Да" Тогда
Записать();
КонецЕсли;
КонецЕсли;
Если Выбран() = 0 Тогда
Возврат;
КонецЕсли;
ОткрытьФормуМодально(ТаблицаЦен.Элемент,ИспользоватьДату());
ЗаполнитьТаблицуЦен();
КонецЕсли;
КонецПроцедуры

Удалены излишние "украшательства"
-----
∙ Отредактировал: Maxim V. Tchirkine (Академик)
∙ Дата редактирования: 26.09.2007, 12:03
Ответ отправил: Axim (статус: 1-ый класс)
Ответ отправлен: 26.09.2007, 11:09

Отвечает: Elric
Здравствуйте, Дмитрий Васильевич!

Итак, повторю то, что сказал в мини-форуме, с корректировкой на Ваш ответ.
Самый очевидный способ -- вывести ТаблицуЗначений на форму, хранить ее в реквизите типа строка неограниченная, при открытии элемента восстанавливать ее функцией ЗначениеИзСтроки(), при записи преобразовывать в строку функцией ЗначениеВСтроку(). Добавить в форму кнопки управления Таблицей, обработку двойного щелчка по Таблице. При необходимости методами ТекущаяКолонка() и ТекущаяСтрока() определять, по какой именно ячейке таблицы был сделан двойной щелчок, тут проблем не будет.

Если нужно обрабатывать в Таблице значений многострочный текст, то лучше всего вывести на форму рядом с Таблицей дополнительный реквизит формы типа Строка-Неограниченной длины-Многострочный с идентификатором, скажем, ЗначениеЯчейки. На форме же поместить невидимый текст с формулой ПоказатьЗначениеЯчейки(), в этой процедуре описать присваивание реквизиту диалога ЗначениеЯчейки собственно значение ячейки Таблицы значений из текущей колонки текущей строки. В формуле реквизита диалога ЗначениеЯчейки нужно прописать процедуру, которая присваивала бы ячейке Таблицы значений новое значение.

В итоге при позиционировании на любую ячейку Таблицы значений в окне ЗначениеЯчейки будет отображено содержимое этой ячейки, доступное для редактирования. И если это содержимое будет изменено, новое значение запишется в Таблицу значений на место прежнего. На мой взгляд это самый удобный вариант из доступных :)
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 26.09.2007, 12:17


Вопрос № 103.349
Добрый день!
1С 7.7 ТиС переписанная. Ситуация такая: Есть регистр остатков Покупатели, в нем измерение КредДокумент типа Документ. Документы в этом измерении бывают разные, у некоторых из них есть реквизит ПунктРазгрузки типа Справочник.ПунктыРазгрузки. Можно ли написать запрос, отбирающий этот реквизит. Я пробовала такой вариант:
|ПунктРазгрузки=Регистр.Покупатели.КредДокумент.Реализация.ПунктРазгрузки,Регистр.Покупатели.КредДокумент.ВозвратОтПокупателя.ПунктРазгрузки;
Выдается ошибка "Неверный путь". Можно ли как то обойти эту ситуацию? или в этом случае воспользовать запросом не удастся?
Отправлен: 25.09.2007, 16:24
Вопрос задала: KittyJ (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Elric
Здравствуйте, KittyJ!

Такую переменную в Запросе объявить не удастся. Если б делали запрос по документам -- тогда можно было бы. Если б измерением регистра был бы документ конкретного вида, тогда тоже можно было бы.

Однако в Условии использовать реквизит можно. Единственное что, нужно еще проверять вид документа, иначе во время выполнения запроса получите целую массу предупреждений о том, что такого реквизита не существует у документов другого вида.

Пример смотрите в Приложении.

Приложение:

---------
В творчестве рождается истина

Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 25.09.2007, 20:56

Отвечает: Полозов Олег aka Asher
Здравствуйте, KittyJ!

Действительно, в запросе в 7.7 у вас ничего не выйдет. можно проверить в цикле, при выводе в таблицу результатов запроса наличие реквизита у документа и если он присутствует, выводить его в таблицу. Если нужно поподробнее, пишите в аську 280666057
Ответ отправил: Полозов Олег aka Asher (статус: 10-ый класс)
Ответ отправлен: 26.09.2007, 03:05


Вопрос № 103.354
Как перенести данные (или полностью конфигурацию) из 1С:Предприятие 7.7 в 1С:Предприятие версии 8.0??? Может и некорректная формулировка... Вобщем, перейти от 1С:Предприятие 7.7 к 1С:Предприятие 8.0...
Отправлен: 25.09.2007, 16:59
Вопрос задал: Игорь Александрович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Яна
Здравствуйте, Звездай Игорь Александрович!
Вместе с 1С 8.0 устанавливает конвертер из 7.7 в 8.0. Он позволяет из базы в формате 7.7 сделать базу в формате 8.0. При этом структура объектов сохранится (почти, за исключением периодических констант и реквизитов справочников - они станут регистрами сведений), а все модули будут закомментированы, т.к. встроенный язык 8.0 очень отличается от языка 7.7. И переводчиком может стать разве что живой программист.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 25.09.2007, 17:05
Оценка за ответ: 5

Отвечает: Angeliccare
Здравствуйте, Игорь Александрович.

Поспешили вы принять ответ как окончательный.

>Вместе с 1С 8.0 устанавливает конвертер из 7.7 в 8.0. Он позволяет из базы в формате 7.7 сделать базу в формате 8.0.

Конвертер из 7.7 в 8.0 - инструмент программиста. Он годится если конвертируется самописная или очень сильно доработанная конфигурация и нанимается группа программистов для осуществления перехода, по сути для разработки конфигурации "под вас". В случае перехода с типового решения, написанного на платформе 1С: Предприятие 7.7 на типовое решение платформы 1С: Предприятие 8.0 - конвертер не используется.

Следует уточнить: 1С: Предприятие 7.7 / 7.7 локальная / 7.7 SQL / 8.0 / 8.1 - это оболочки, платформы.
Данные хранятся в конфигурациях (в структуре, указанной в конфигурациях), платформа - служит для доступа к данным в конфигурациях.

Конфигурация - это "1С: Бухгалтерия 7.7" , "1С: Торговля и склад 7.7", "1С: Комплексная поставка 7.7", "1С: Управление торговлей 8.0", "1С:Бухгалтерия 8.0", ...

В случае перехода и необходимости переноса данных между типовой конфигурации для платформы 7.7 и типовой конфигурацией платформы 1С 8.0 - необходимо осуществлять выгрузку и затем - загрузку данных (или переброс данных по OLE). Обычно для упрощения переброски переносят только остатки (взаиморасчетов, по складу), без документов прошлых периодов. Однако некоторые фрачайзинговые фирмы имеют наработки, позволяющие осуществлять переброски не только остатков, но и самих документов из одной конфигурации 1С в другую.

Если необходимо осуществить переброс данных, находящихся в конфигурации - следует указать - какая конфигурация у вас используется на 7.7 и какую собираетесь приобрести (или уже приобрели).

Буду заинтересован предложить услуги обслуживания перехода как программист, как внедренец.
Ответ отправил: Angeliccare (статус: 1-ый класс)
Ответ отправлен: 25.09.2007, 20:19
Оценка за ответ: 5

Отвечает: Полозов Олег aka Asher
Здравствуйте, Игорь Александрович!

Вариант предложеный Яной, действительно подойдет только если конфа рисованая вами. Опять же придется весь код переводить с языка 7.7 на язык 8.0 ручками. Для переноса даннх 7.7 в 8.0 (в основном для типовых конфигураций) я использую конфигурацию Конвертация данных 8.0 к стати в ней есть ряд готовых конвертаций. Геморройно, но если разобраться в работе этой конфигурации, получите неплохие результаты.
Ответ отправил: Полозов Олег aka Asher (статус: 10-ый класс)
Ответ отправлен: 26.09.2007, 03:13
Оценка за ответ: 5


Вопрос № 103.431
Здравствуй эксперты, как всегда вопрос:
1 Есть бухгалтерия 77 рел 490 возможно ли добавить счет 002.1 в документ инвентаризация ТМЦ если возможно то как?
Заранее спасибо
Отправлен: 26.09.2007, 11:05
Вопрос задал: Diamond'ES (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Axim
Здравствуйте, Diamondes!
откройте конфигуратор ->
план счетов ->
нажмите Insert ->
введите счет.
Ответ отправил: Axim (статус: 1-ый класс)
Ответ отправлен: 26.09.2007, 12:26
Оценка за ответ: 3
Комментарий оценки:
Этот счет уже имеется в плане счетов, нужно добавить именно в документ

Отвечает: BigHard
Здравствуйте, Diamondes!
Можно, конечно, так, как Вам порекомендовал предыдущий эксперт. Только предварительно взвесьте все "за" и "против" такого шага. Возможно, придется сильно переделывать конфигурацию, если Вы хотите, чтобы движения по добавленому счету выходили в некоторых специализированных отчетах.

---------
Чем отличается чайник от программиста: У чайника в одном килобайте 1000 байт, а у программиста в одном километре 1024 метра
Ответ отправил: BigHard (статус: Студент)
Ответ отправлен: 26.09.2007, 14:28

Отвечает: Elric
Здравствуйте, Diamondes!

С учетом Вашего комментария в минифоруме, дополняю предыдущие ответы.
Вы написали:
Вот место где оно спотыкается
Для СчетчикЦикла = 1 По ОС.РазмерСписка() Цикл
Реквизит = ОС.ПолучитьЗначение(СчетчикЦикла);
Реквизит = "ТМЦ_" + СтрЗаменить(Реквизит, ".", "_");
ОС.Пометка(СчетчикЦикла, ПолучитьАтрибут(Реквизит));
КонецЦикла;


У Вас при обращении к счету 002.1 получаются следующие операции:
Реквизит = "ТМЦ_002_1";
...ПолучитьАтрибут(Реквизит)...

Идет обращение к реквизиту ТМЦ_002_1. Если у данного документа нет такого реквизита, у Вы получите соответствующее сообщение об ошибке.
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 26.09.2007, 21:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо

Отвечает: Полозов Олег aka Asher
Здравствуйте, Diamondes!

Вам в реквизиты шапки надо добавить реквизит ТМЦ_002_1
В процедуру ПриОткрытии() добавить строку:
ОС.ДобавитьЗначение("002.1","Материалы");
Ответ отправил: Полозов Олег aka Asher (статус: 10-ый класс)
Ответ отправлен: 27.09.2007, 05:24
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 103.433
Спасибо за ответ... Но не могли бы вы по-подробнее описать эту процедуру: откуда и как запустить этот конвертор и т.д... Заранее спасибо...
Отправлен: 26.09.2007, 11:13
Вопрос задал: Игорь Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Яна
Здравствуйте, Игорь Александрович!
Пуск -> Все программы -> 1С:Предприятие 8.0 -> Конвертер ИБ 7.7
Если его там нет, то нужно запустить инсталяцию 1С:Предприятия 8.0 и установить его.
Запускаете конвертер, указываете исходную базу на 7.7 (папку), путь к чистой папке для базы в 8.0. Дальше устанавливаете галочки настроек, чем больше сконвертируете, тем меньше потом работать. Запускаете и ждете (возможно долго, зависит от размера базы). Начинать экспериментировать с галочками лучше на маленькой базе.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 26.09.2007, 15:31
Оценка за ответ: 5

Отвечает: Полозов Олег aka Asher
Здравствуйте, Игорь Александрович!

Конвертация данных 8.0 распространяется на дисках ИТС. или можете взять у франчайзи, у которого покупали программу.
Ответ отправил: Полозов Олег aka Asher (статус: 10-ый класс)
Ответ отправлен: 27.09.2007, 05:27


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.05 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное