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

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

  Все выпуски  

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


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

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

Выпуск № 598
от 11.09.2007, 07:35

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


Вопрос № 100878: Дело следующее. На компе клиента стояла БП 8.0.18.2 с двумя базами. После поломки пришли добрые люди из "скорой помощи" и соответственно все отформатили, винду коряво поставили и оказали массу медвежьих услуг. Короче, восстановил два ф...
Вопрос № 100882: Здравствуйте!!! Подскажите, есть ли в восьмерке аналог процедуры ВводНового() из семерки, которая возникает при вводе нового документа, что-то в предопределенных процедурах я ничего не нашел...
Вопрос № 100883: Здравствуйте уважаемые эксперты. В очередной раз к вам за помощью. Проблема с запросом (часть процедуры в приложении). Происходит выборка данных из журнала расчетов, и все бы хорошо, но только как у сотрудника встречается в одном периоде несколько за...
Вопрос № 100884: Разбираюсь со стандартным отчетом "Расчеты с контрагентами" (1С 7.7). Не могу понять как в таблице задана расшифровка ячеек. В свойствах ячейки поле расшифровка пустое. процедура обработка ячейки таблицы вызывается из глобального модуля. Но...
Вопрос № 100890: Здравствуйте!!! 1с 8 У меня на форме есть реквизит клиент, как програмно найти этот элемент в справочнике, присвоить уже реквизиту этого элемента другое значение и записать?...
Вопрос № 100959: Здравствуйте эксперты! Снова обращаюсь к вам за помощью! Подскажите советом, в журнале документов вставил колонку "Текст", теперь вопрос, возможно ли сделать так, чтобы пользователи могли интерактивно ставить галочки в этой колонке на п...
Вопрос № 100960: В восьмерке недавно, с запросами тоже не работал. Отсюда вопрос: почему не работает конструкция такого вида? Не будет работать конструкция и если я уберу функцию ВЫРАЗИТЬ - ругается на синтаксис. Как правильно в конструкции ВЫБОРа выводить выражения ...

Вопрос № 100.878
Дело следующее. На компе клиента стояла БП 8.0.18.2 с двумя базами.
После поломки пришли добрые люди из "скорой помощи" и соответственно все отформатили, винду коряво поставили и оказали массу медвежьих услуг. Короче, восстановил два файла 1cd (от обоих баз) размером около 80 мегов каждые. Создаю пустую базу замещаю 1cd одним из восстановленных, но при загрузке ругается: файл поврежден! Собственно к вопросу: есть ли у кого утилита работы с 1cd файлами, которая бы показывала какие куски целые, какие нет, по возможности исправляла? Заранее спасибо!
Отправлен: 05.09.2007, 07:13
Вопрос задал: Самсонов Андрей Юрьевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Townsman
Здравствуйте, Самсонов Андрей Юрьевич!
Дело в том, что 1cd-файлы состоят не из "кусков", а имеют единую структуру, напоминающую базу данных MS Access. Это было сделано для повышения "взломоустойчивости" базы, в отличие от 7,7 с dbf-файлами, которые нормально защитить нельзя в принципе. Во-первых, попробуйте не заместить пустую базу восстановленной, а подключиться к существующей. Если она хоть как-то загрузится, то проще всего использовать обработку ВыгрузкаЗагрузкаДанныхXML.epf (имеется на дисках ИТС), т.е. выгрузить все, что удастся, в xml-файл, затем создать пустую базу и таким же образом в нее это дело загрузить. Если же не происходит загрузка исходных файлов, то придется заменять базу на резервную копию. Удачи.
Ответ отправил: Townsman (статус: 9-ый класс)
Ответ отправлен: 05.09.2007, 07:59

Отвечает: BigHard
Здравствуйте, Самсонов Андрей Юрьевич!
Врядли после форматирования у вас что-то получится. Дело в том, что ни одна из программ восстановления удаленных файлов не может корректно восстановить удаленные ДБФ файлы 1с, тем более МД, корректно восстанавливаются только текстовые файлы баз и еще несколько ненужных типов, а они нам не нужны.
У меня было несколько подобных случаев, ни в одном ничего ен получилось. Восстановитесь из последней резервной копии, если она есть конечно....
---------
Чем отличается чайник от программиста: У чайника в одном килобайте 1000 байт, а у программиста в одном километре 1024 метра
Ответ отправил: BigHard (статус: Студент)
Ответ отправлен: 05.09.2007, 10:41

Отвечает: Яна
Здравствуйте, Самсонов Андрей Юрьевич!
Рекомендую Вам бросить это гиблое дело, вернуться к резервной копии и вбить все недостающие в ней документы. Будет быстрей и эффективней.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 05.09.2007, 14:34


Вопрос № 100.882
Здравствуйте!!!
Подскажите, есть ли в восьмерке аналог процедуры ВводНового() из семерки, которая возникает при вводе нового документа, что-то в предопределенных процедурах я ничего не нашел
Отправлен: 05.09.2007, 08:50
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vovchai
Здравствуйте, BigHard!

в процедуре ПриОткрытии() выполняйте проверку через ЭтоНовый()
Ответ отправил: Vovchai (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 08:59
Оценка за ответ: 5
Комментарий оценки:
спасибо

Отвечает: Цыбань Евгений Вячеславович
Здравствуйте, BigHard!
Аналогом этой процедуры для документа служит событие (процедура) формы документа ПриОткрытии()
В этой процедуре следует использовать следующую конструкцию

Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ

Эта же конструкция справедлива и для справочников, планов видов характеристик, видов расчета и плана счетов.

Эту конструкцию так же можно использовать и в других событиях документов и справочников, например в событии формы ПередОткрытием() или в модуле документа в событии ПередЗаписью() или ПриЗаписи(), хотя в типовых конфигурациях 1С эта конструкция используется в ПриОткрытии()
Ответ отправил: Цыбань Евгений Вячеславович (статус: 1-ый класс)
Ответ отправлен: 05.09.2007, 09:59

Отвечает: Ромашов Евгений Николаевич
Здравствуйте, BigHard!

есть метод ЭтоНовый() в процедуре при открытии() вставляется и узнается что открывается новый документ
Ответ отправил: Ромашов Евгений Николаевич (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 10:21
Оценка за ответ: 5


Вопрос № 100.883
Здравствуйте уважаемые эксперты. В очередной раз к вам за помощью. Проблема с запросом (часть процедуры в приложении). Происходит выборка данных из журнала расчетов, и все бы хорошо, но только как у сотрудника встречается в одном периоде несколько записей с одинаковым видом расчета по результатам процедуры я вижу только одну. Как решить эту проблему…

Приложение:

Отправлен: 05.09.2007, 08:52
Вопрос задал: PaTiFoN (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: IUnknown
Здравствуйте, PaTiFoN!
убрать группировку Рассчет
---------
я не специалист
Ответ отправил: IUnknown (статус: Студент)
Ответ отправлен: 05.09.2007, 09:35
Оценка за ответ: 3
Комментарий оценки:
Не то...

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

В результате запроса Вы получите уникальные комбинации "Вид расчета - Период регистрации". Далее есть два варианта, в зависимости от того, какой эффект Вам нужен.

1) Если Вам нужен Сумма результатов по всем одинаковым комбинациям, то в текст Запроса необходимо добавить строку:
Функция Сумма = Сумма(Результат);
(см. в Синтакс-Помощнике "Язык Запросов", Функция)
Обращаться к сумме в модуле можно будет как Запрос.Сумма.
Например, в журнале расчетов есть две записи с видом расчета Оклад (в периоде регистрации 01.07.2007) и результатами 120 и 220 соответственно. Тогда запрос тебе выдаст одну комбинацию "Оклад - 01.07.2007" и Запрос.Сумма=340.

2. Если же нужно именно перебирать все записи журнала расчетов, то нужно добавить группировку
ТекущаяЗапись = ЖурналРасчетов.Зарплата.ТекущаяЗапись;
и добавить дополнительный уровень вложенного цикла чтобы обходить и эту группировку. Но думается мне нужен именно первый вариант, сумма по одинаковым записям :)

Кстати, я обратил внимание на заполнение таблицы значений. Дело в том, что периодов регистрации для разных видов расчетов может быть неодинаковое количество, и сами периоды могут отличаться. Обращение просто по номеру колонки без проверки, с каким периодом мы имеем дело, может привести к смешению данных.
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 05.09.2007, 10:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!! Все работает. Мне нужен первый вариант... А проблему с таблицей я решу другим способом.

Отвечает: Ромашов Евгений Николаевич
Здравствуйте, PaTiFoN!

все правильно группировка складывает суммы по одинаковым видам расчета. если надо видеть отдельно то придется группировку документ вводить в запрос
Ответ отправил: Ромашов Евгений Николаевич (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 10:20
Оценка за ответ: 4
Комментарий оценки:
Как раз то что ничего не складовалось, без ответа Elric.


Вопрос № 100.884
Разбираюсь со стандартным отчетом "Расчеты с контрагентами" (1С 7.7). Не могу понять как в таблице задана расшифровка ячеек. В свойствах ячейки поле расшифровка пустое. процедура обработка ячейки таблицы вызывается из глобального модуля. Но все равно как-то указывается что для этой ячейки или группы ячеек естьрасшифровка.
Отправлен: 05.09.2007, 08:55
Вопрос задала: Оксана/kasy (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: svsrus
Здравствуйте, Оксана/kasy!

К сожалению у меня нет данного отчета. Судя по всему у Вас конфигурация ТиС.

1) Но Вы уже сами почти ответили на свой вопрос. Если Вы знаете что ОбработкаЯчейкиТаблицы() вызывается из глобального модуля, то посмотрите, что написано в этой процедуре. Кроме того прочитайте описание процедуры в синтакс-помощнике, помоему, довольно подробно все описано. Т.е. при вызове процедуры ОбработкаЯчейкиТаблицы() в качестве параметра "Значение" в процедуру передается значение ячейки. И в зависимости от типа значения процедура выполняет то или иное действие. Если значением ячейки будет документ, то откроется этот документ, если список значений - вызовется какой-нибудь стандартный отчет(в зависимости от параметров списка значений). Другими словами, при двойном клике на ячейке Вы получаете: 1) значение ячейки 2) адрес ячейки и 3) контекст таблицы. Имея эти данные Вы можете делать практически все. Для этого вам достаточно написать в теле процедуры в модуле отчета ОбработкаЯчейкиТаблицы() свой код.

2) Кроме того, таблица(область таблицы) имеет атрибут "Расшифровка". Куда вы можете указать значение для расшифровки произвольной ячейки программно:
Таб = СоздатьОбъект("Таблица");
ВыбОбласть = Таб.Область("R8C4");
ВыбОбласть.Расшифровка(ВыбДокумент, 1).

3) и последнее... очень часто, особенно в стандартных отчетах указывают значение расшифровки для всей строки. Например, обычно, только в первой колонке отчета указывается значение расшифровки "Расшифровка#", что означает, что данная расшифровка применяется ко всей(!) строке. Т.е. в других колонках значение расшифровки указывать необязательно(пустое).
Ответ отправил: svsrus (статус: 7-ой класс)
Ответ отправлен: 05.09.2007, 09:49

Отвечает: Цыбань Евгений Вячеславович
Здравствуйте, Оксана/kasy!
В расшифровке ячеек данного отчета скорее всего использована конструкция типа ТекРасшифровка#
Решетка в конце выражения означает, что расшифровка ячейки распостраняется на все ячейки строки для которых не задана расшифровка.
Ответ отправил: Цыбань Евгений Вячеславович (статус: 1-ый класс)
Ответ отправлен: 05.09.2007, 10:13

Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Оксана/kasy!

если при наведение мышка переключается на лупу значит есть расшифровка, если в свойствах нет надо проверить вывод секции может там где - нибудь расшифровка задается
Ответ отправил: Ромашов Евгений Николаевич (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 10:17

Отвечает: Dmitry Stashenko
Здравствуйте, Оксана/kasy!

расшифровка задана в первой ячеке каждой строки для всей строки
Ответ отправил: Dmitry Stashenko (статус: 9-ый класс)
Ответ отправлен: 05.09.2007, 13:19
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ. Нашла я эту ячейку.


Вопрос № 100.890
Здравствуйте!!!
1с 8
У меня на форме есть реквизит клиент, как програмно найти этот элемент в справочнике, присвоить уже реквизиту этого элемента другое значение и записать?
Отправлен: 05.09.2007, 10:20
Вопрос задал: BigHard (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vovchai
Здравствуйте, BigHard!
если я правильно понял то:

Элемент = Реквизит.ПолучитьОбъект();
Элемент.НазваниеРеквизитаЭлемента = НужноеЗначение;
Элемент.Записать();
Ответ отправил: Vovchai (статус: 4-ый класс)
Ответ отправлен: 05.09.2007, 10:26
Оценка за ответ: 5
Комментарий оценки:
Вы все абсолютно правильно поняли, спасибо

Отвечает: Sidorov A.
Здравствуйте, BigHard!
Пример с выборкой из справочника.

Приложение:

Ответ отправил: Sidorov A. (статус: 1-ый класс)
Ответ отправлен: 05.09.2007, 17:24


Вопрос № 100.959
Здравствуйте эксперты! Снова обращаюсь к вам за помощью!
Подскажите советом, в журнале документов вставил колонку "Текст", теперь вопрос, возможно ли сделать так, чтобы пользователи могли интерактивно ставить галочки в этой колонке на против нуйжной строчки (как в таблице значений)?
Благодарен всем откликнувшимся!
Отправлен: 05.09.2007, 17:05
Вопрос задал: Vlad® (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Татьяна Ласовская
Здравствуйте, Vlad®!
В табличной части документа в свойствах есть закладка “Картинка”. В ней нужно выбрать картинку (или коллекцию картинок).
Для отображения пиктограммы в колонке нужно в ее свойствах поставить птичку “выводить пиктограммы”. А дальше при присвоении числового значения в поле данной колонки будет выведане пиктограмма с порядковым номером из коллекции пиктограмм, присвоенной таблице.
Коллекция пиктограмм - это картинки размером 16х16, идущие одна за одной.
Ответ отправила: Татьяна Ласовская (статус: 9-ый класс)
Ответ отправлен: 05.09.2007, 17:59
Оценка за ответ: 4
Комментарий оценки:
Спасибо, я не могу сообразить как сделать в Журнале документов, чтобы пользователь сам ставил галочки, например напротив проведенного документа?

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Vlad®!
Да нет проблем (в 7.7)
Добавьте в все документы (или в общие реквизиты) реквизит шапки СтоитПтичка Число,1,0
В свойстве текста процедуру ВывестиТекст()
Функция ВывестиТекст()
Если ТекущийДокумент.Выбран()=1 Тогда
Если ТекущийДокумент.СтоитПтичка=1 Тогда Возврат "+";
Иначе Возврат "";

Таким образом, Вы будете плюсиком (аналогом птички ) отмечать документы.

Ну и наконец, на форме журнала сделайте кнопочку, которая делает ТекущийДокумент.СтоитПтичка равным 1 или 0.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Практикант)
Ответ отправлен: 05.09.2007, 18:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо за отличный ответ, единственное не получается, это если добавляю кнопку на форму журнала. Если же кнопка (для проверки) на форме документа то все отлично!

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

Двойным щелчком галочку Вы не поставите. Нужно делать отдельную кнопку, которая устанавливала бы признак для конкретного документа. В качестве признака может выступать значение реквизита (как предложил Шахрайчук Владимир Анатольевич), либо если галочки нужны временно то признаки могут храниться в списке значений (переменная в модуле журнала документов).
---------
В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 05.09.2007, 18:40


Вопрос № 100.960
В восьмерке недавно, с запросами тоже не работал. Отсюда вопрос: почему не работает конструкция такого вида? Не будет работать конструкция и если я уберу функцию ВЫРАЗИТЬ - ругается на синтаксис. Как правильно в конструкции ВЫБОРа выводить выражения с применением арифметических операторов? Заранее благодарен за ответ.

Приложение:

Отправлен: 05.09.2007, 17:15
Вопрос задал: Sidorov A. (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Если в запросе поле не имеет значения, это означает что оно равно NULL, тогда
ваша конструкция будет примерно такая:

ВЫБОР
КОГДА ФактКолвоТТ.ВсегоТТФактически = NULL
ТОГДА 0
ИНАЧЕ 2*ВЫРАЗИТЬ(КолвоАктивныхТТФлейкс.АктивныеТТФлейкс КАК Число) КОНЕЦ
Ответ отправил: Полозов Олег aka Asher (статус: 9-ый класс)
Ответ отправлен: 06.09.2007, 02:58
Оценка за ответ: 5
Комментарий оценки:
Спасибо. В целом на самом деле конструкция выглядит так: ВЫБОР КОГДА ФактКолвоТТ.ВсегоТТФактически ЕСТЬ NULL ТОГДА 0
ИНАЧЕ 100 * ФактКолвоТТ.ВсегоТТФактически, но именно Ваша поправка мне помогла. С уважением...
КОНЕЦ


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

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

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

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

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


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


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

В избранное